如何使用 PowerShell CIM 在远程计算机上设置 and/or 注册表值?
How do you use PowerShell CIM to get and/or set registry values on a remote computer?
如何使用 PowerShell CIM 命令获取 and/or 设置远程计算机上的注册表值?我已验证 New-CimSession 已正确连接,但找不到用于获取或设置注册表值的命令。
你可以在 PSsession 上完成
$RemoteComputer = New-PSsession -Computer CompNamehere
Invoke-Command -Computer $RemoteComputer -ScriptBlock {Set-ItemProperty HKLM:\registrypath}
这将显示示例
Get-Help Set-ItemProperty -Full
您需要调用 Invoke-CimMethod
来调用 StdRegProv
WMI class for that, e.g. like this 的正确方法:
$computer = 'remotehost'
$hive = [uint32]'0x80000002' # HKLM
$subkey = 'SOFTWARE\Foo'
$value = 'bar'
$data = 'baz'
Invoke-CimMethod -Computer $computer -Namespace 'root/cimv2' -Class 'StdRegProv' -MethodName 'SetStringValue' -Arguments @{
'hDefKey' = $hive
'sSubKeyName' = $subkey
'sValueName' = $value
'sValue' = $data
}
但是,我建议使用正确的 .Net API:
而不是 CIM 或 WMI
$computer = 'remotehost'
$hive = 'LocalMachine' # HKLM
$subkey = 'SOFTWARE\Foo'
$value = 'bar'
$data = 'baz'
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($hive, $computer)
$key = $reg.OpenSubKey($subkey, $true)
$key.SetValue($value, $data, 'String')
如何使用 PowerShell CIM 命令获取 and/or 设置远程计算机上的注册表值?我已验证 New-CimSession 已正确连接,但找不到用于获取或设置注册表值的命令。
你可以在 PSsession 上完成
$RemoteComputer = New-PSsession -Computer CompNamehere
Invoke-Command -Computer $RemoteComputer -ScriptBlock {Set-ItemProperty HKLM:\registrypath}
这将显示示例
Get-Help Set-ItemProperty -Full
您需要调用 Invoke-CimMethod
来调用 StdRegProv
WMI class for that, e.g. like this 的正确方法:
$computer = 'remotehost'
$hive = [uint32]'0x80000002' # HKLM
$subkey = 'SOFTWARE\Foo'
$value = 'bar'
$data = 'baz'
Invoke-CimMethod -Computer $computer -Namespace 'root/cimv2' -Class 'StdRegProv' -MethodName 'SetStringValue' -Arguments @{
'hDefKey' = $hive
'sSubKeyName' = $subkey
'sValueName' = $value
'sValue' = $data
}
但是,我建议使用正确的 .Net API:
而不是 CIM 或 WMI$computer = 'remotehost'
$hive = 'LocalMachine' # HKLM
$subkey = 'SOFTWARE\Foo'
$value = 'bar'
$data = 'baz'
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($hive, $computer)
$key = $reg.OpenSubKey($subkey, $true)
$key.SetValue($value, $data, 'String')