2016-06-23 32 views
0

Ich versuche, einen Registry-Pfad von einem Remote-Server abfragen:Powershell 2.0, wie die Werte von Remote-Registrierung erhalten " .. Windowsupdate Auto Update RebootRequired"

"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" 

Diese enthält eine Liste von Alle Updates, die einen Neustart erfordern (REG_DWORD), und vielleicht einige Daten irgendeiner Art. Ich bin nur an der Anzahl der ausstehenden Updates interessiert.

den folgenden PS Cmdlets Performing, ich habe nicht das Ergebnis, das ich in der Abfrage den reg Pfades erwarten:

 $Computer = "Server01" 
     $HKLM = [UInt32] "0x80000002" 
     $WMI_Reg = [WMIClass] “\\$Computer\root\default:StdRegProv” 
     $RegRR = $WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired") 

$RegRR = 
__GENUS   : 2 
__CLASS   : __PARAMETERS 
__SUPERCLASS  : 
__DYNASTY  : __PARAMETERS 
__RELPATH  : 
__PROPERTY_COUNT : 2 
__DERIVATION  : {} 
__SERVER   : 
__NAMESPACE  : 
__PATH   : 
ReturnValue  : 0 
sNames   : 

jedoch als Test, wenn ich den Pfad einen Schlüssel, bevor diese Abfrage, ohne „\ RebootRequired "dann funktioniert das und ich kann dann die sValues ​​abfragen.

$RegRR = $WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\ 

__GENUS   : 2 
__CLASS   : __PARAMETERS 
__SUPERCLASS  : 
__DYNASTY  : __PARAMETERS 
__RELPATH  : 
__PROPERTY_COUNT : 2 
__DERIVATION  : {} 
__SERVER   : 
__NAMESPACE  : 
__PATH   : 
ReturnValue  : 0 
sNames   : {Power, RequestedAppCategories, Results, RebootRequired...} 

Letztlich möchte ich diese Ausrichtungs-Schlüssel abzufragen, um die Anzahl der Updates anhängig einem Neustart zurückzukehren, DWORD Datensätze vorhanden sind. Es gibt ein RebootRequiredSince-Datum, das zunächst nützlich sein könnte, aber herausgefunden hat, dass nicht alle unsere Server dies haben (Mix aus 2008 R2 und 2012).

Irgendwelche Ideen?

Dank

+0

Hallo, können Sie mit dieser anderen Methode versuchen: http://stackoverflow.com/questions/15069130/ get-remote-registry-value – sodawillow

Antwort

1

Stellen Sie sicher, dass die RemoteRegistry-Dienst auf dem Zielcomputer zu ermöglichen, versuchen Sie können dann:

$Computer = "RemoteComputerName" 
$RootKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$Computer) 
$SubKey = $RootKey.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update\\RebootRequired") 

alle Sie tun können, zur Verfügung Werte zu erhalten:

$SubKey.GetValueNames() 

Um alle Namen der Unterschlüssel zu erhalten:

$SubKey.GetSubKeyNames() 

auf spezifischen Wert zu erhalten:

$SubKey.GetValue("ValueName") 

den Standardschlüssel Wert zu erhalten:

$SubKey.GetValue($null) 
+0

Ja, ich habe das getan, außer dass ich GetSubKeyNames() verwendet habe, was null und nicht GetValueNames() zurückgegeben hat, und jetzt bekomme ich die Ergebnisse, die ich brauche, danke! – JDGEEK