1

我已经构建了一小段代码来查询和存储一组服务器的值,这似乎工作正常,但是我想知道是否有“纯 PowerShell”方法来执行此操作。

$eServers = Get-ExchangeServer
$Servers = $eServers | ?{$_.Name -like "Delimit_server_group"}
foreach ($server in $Servers)
    {
    [string]$Key1 = "\\$server\HKLM\SYSTEM\CurrentControlSet\Control\"
    [string]$rKeys += (REG QUERY "$key1" /s)
    }
4

2 回答 2

2

您可以使用RegistryKey该类打开远程注册表:

$RemoteHKLM = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$server)
$RemoteKey = $RemoteHKLM.OpenSubKey('SYSTEM\CurrentControlSet\Control')
# Following will return all subkey names
$RemoteKey.GetSubKeyNames()

如果您需要等效于的功能,则必须自己实现递归遍历reg query /s

于 2017-07-13T22:40:29.283 回答
1

Matthias 的回答可能是您最好的选择,但您也可以采取其他方法。如果您在系统上启用了 PSRemoting,您可以调用远程命令,例如:

$key = 'HKLM:\SYSTEM\CurrentControlSet\Control'

Invoke-Command -Computer $Servers -ScriptBlock {
    Get-ChildItem $args[0] | Select-Object -Expand Name
} -ArgumentList $key
于 2017-07-14T08:44:32.903 回答