2017-07-13 2 views
1

Ich habe diesen kleinen Code-Block gebaut, um die Werte einer Gruppe von Servern abzufragen und zu speichern, was gut zu funktionieren scheint, aber ich würde gerne wissen, ob es einen "reinen PowerShell" Weg gibt, dies zu tun.Bessere Möglichkeit, Remote-Server-Registries abzufragen?

$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) 
    } 

Antwort

2

können Sie die RegistryKey class verwenden, um eine Remote-Registrierung zu öffnen:

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

Sie werden sich rekursive Traversal implementieren, wenn Sie Funktionalität entspricht reg query /s

+0

Ich werde mich darum kümmern !! – JTorres2020

1

Matthias' answer brauchen, ist wahrscheinlich die beste Option, aber es gibt andere Ansätze, die Sie auch ergreifen könnten. Wenn Sie PSRemoting auf Ihren Systemen aktiviert haben, könnten Sie zum Beispiel Remote-Befehle wie folgt aufrufen:

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

Invoke-Command -Computer $Servers -ScriptBlock { 
    Get-ChildItem $args[0] | Select-Object -Expand Name 
} -ArgumentList $key 
Verwandte Themen