在远程计算机上添加注册表项

时间:2018-09-19 19:07:06

标签: powershell

我正在尝试修改远程计算机上的现有注册表项值。当我运行以下命令时,应该更改为新的“ 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使用前几行中设置的变量?

1 个答案:

答案 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