我正在使用此命令,以便在我需要测试某些内容时能够远程查看和编辑已注册域上计算机的注册表项。在这种情况下,我正在查看Excel的“ vbawarninsg”键。这样就可以了。
cls
$computername = Read-Host "Enter computer name..."
Invoke-Command -ComputerName $computername {Get-ItemProperty -Path 'REGISTRY::HKEY_USERS\xxxxxxx\Software\Policies\Microsoft\office\16.0\excel\security' } |
Select-Object PSComputerName, vbawarnings, PSParentPath | fl
$name = "vbawarnings"
下一部分是使用New-ItemProperty为“ vbawarnings”键设置新值。当我为-Path名称分配变量时,它给我一个错误“由于参数'Path'为空,因此无法将其绑定到参数'Path'。”
这是给我一个错误的脚本
cls
$computername = Read-Host "Enter computer name..."
$registryPath = 'REGISTRY::HKEY_USERS\xxxxxxx\Software\Policies\Microsoft\office\16.0\excel\security'
Invoke-Command -ComputerName $computername {Get-ItemProperty -Path $registryPath } |
Select-Object PSComputerName, vbawarnings, PSParentPath | fl
$name = "vbawarnings"
$value = Read-Host "To modify...Enter a value"
New-ItemProperty -Path $registryPath -Name $name -Value $value `
-PropertyType DWORD -Force -Verbose | Out-Null
非常感谢您的帮助!
答案 0 :(得分:1)
为了远程使用变量(例如Invoke-Command
的情况),您需要使用$using:
变量范围:
Invoke-Command -ComputerName $cn {
Get-ItemProperty -Path $using:regPath
}
或将其作为参数传递
Invoke-Command -ComputerName $cn {
param($path)
Get-ItemProperty -Path $path
} -ArgumentList '-path', $regPath
答案 1 :(得分:-1)
执行Invoke-Command时,该脚本块将发送到远程服务器。
Invoke-Command -ComputerName $computername {Get-ItemProperty -Path $registryPath }
在远程服务器上,即使您的脚本中本地有$ registryPath,它也为空。
因此,只需硬编码注册表路径:
Invoke-Command -ComputerName $computername {Get-ItemProperty -Path 'REGISTRY::HKEY_USERS\xxxxxxx\Software\Policies\Microsoft\office\16.0\excel\security' }