Cmdlet参数忽略字符串名称中的变量

时间:2019-06-25 18:06:37

标签: powershell

我正在使用一个数组来存储用户配置文件的名称。我试图在每个配置文件上执行一组命令,但是某些cmdlet遇到了问题。我正在使用$ profile来存储配置文件名称,但是PowerShell不会将其解释为存储的变量。

例如 -DestinationPath C:\ Users \ $ profile \ Desktop \ test.zip

我对诸如Get-ChildItem之类的其他cmdlet没问题,我认为这是由于参数可以接受,但是我不确定如何绕过它。

我考虑过将路径存储在另一个变量中,并将其调用给-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

0 个答案:

没有答案