我正在尝试修改远程计算机上的现有注册表项值。当我运行以下命令时,应该更改为新的“ AU”的目标注册表项将清除其值。
$AU = Read-Host -Prompt 'Enter AU "Ex: AU00325"'
#Changes Registry Keys
Invoke-Command -ComputerName $Computers -ScriptBlock {
New-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WFB -Force | New-ItemProperty -Name "Branch" -Value $AU -Force | Out-Null ;
New-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\WFB -Force | New-ItemProperty -Name "Branch" -Value $AU -Force | Out-Null ;
New-Item -Path Registry::HKEY_LOCAL_MACHINE\SYSTEM\WFB -Force | New-ItemProperty -Name "Branch" -Value $AU -Force | Out-Null ;
}
使用invoke命令时,变量似乎没有保留。我使用-Value“ Test”而不是$ AU验证了这一点,并且工作正常。有没有一种方法可以使Invoke-Command使用前几行中设置的变量?
答案 0 :(得分:0)
您需要使用-ArgumentList
将变量传递到脚本块中,然后通过param()
在脚本块中接受它们。
尝试以下操作:
$AU = Read-Host -Prompt 'Enter AU "Ex: AU00325"'
#Changes Registry Keys
Invoke-Command -ComputerName $Computers -ScriptBlock {
param($AU)
New-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WFB -Force | New-ItemProperty -Name "Branch" -Value $AU -Force | Out-Null ;
New-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\WFB -Force | New-ItemProperty -Name "Branch" -Value $AU -Force | Out-Null ;
New-Item -Path Registry::HKEY_LOCAL_MACHINE\SYSTEM\WFB -Force | New-ItemProperty -Name "Branch" -Value $AU -Force | Out-Null ;
} -ArgumentList $AU