Я использую массив для хранения имен профилей пользователей.Я пытаюсь выполнить набор команд для каждого профиля, и у меня возникают проблемы с определенными командлетами.Я использую $ profile для хранения имени профиля, но PowerShell не интерпретирует это как хранимую переменную.
, например -DestinationPath C: \ Users \ $ profile \ Desktop \ test.zip
У меня нет проблем с другими командлетами, такими как Get-ChildItem, и я предполагаю, что это связано с тем, что параметры принимают, но я не уверен, как это обойти.
Я думал о сохранении пути в другомпеременная и вызовите это -DestinationPath, но это создает ту же проблему.Я пробовал различные комбинации одинарных / двойных кавычек.
$profilelist = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
$allProfiles = @((dir $profilelist | Get-ItemProperty).profileImagePath | Where-Object { $_ -notlike 'C:\Windows*' })
ForEach ($profile in $allProfiles)
{
$directory = 1
do
{
New-Item -Path $profile\Desktop\$directory -Type Directory
$directory
$directory++
}while($directory-lt 5)
#Create File
Get-ChildItem -Path C:\Users\$profile\Desktop
New-Item -Path *\1\ -Name passwords.txt -Type File
# Write Data
Get-ChildItem -Path C:\Users\$profile\Desktop
Add-Content -Path *\1\passwords.txt -Value "stackoverflow.com: real@fake.com;password123"
# Create ZIP file from files located on Desktop
Get-ChildItem -Path C:\Users\$profile\Desktop
Compress-Archive -Path * -CompressionLevel Optimal -DestinationPath C:\Users\$profile\Desktop\test.zip