2017-07-13 6 views
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) 
    } 

答えて

2

あなたは、リモートレジストリを開くためにRegistryKey classを使用することができます。

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

あなたはreg query /s

+0

私はそれを調べます! – JTorres2020

1

Matthias' answerに相当する機能を必要とする場合は、再帰的トラバーサルを自分で実装する必要がありますおそらくあなたの最善の方法ですオプションがありますが、他の方法もあります。あなたのシステムでPSRemotingが有効になっている場合は、例えば次のようなリモートコマンドを呼び出すことができます:

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

Invoke-Command -Computer $Servers -ScriptBlock { 
    Get-ChildItem $args[0] | Select-Object -Expand Name 
} -ArgumentList $key 
関連する問題