Verwenden des Cmdlet \"Get-ItemProperty\"

Auflisten der Werte aus einem Registrierungsschlüssel

Wenn Sie eine Liste aller Dateien in einem Ordner zurückgeben wollen, rufen Sie einfach das Cmdlet Get-ChildItem auf. Der folgende Befehl beispielsweise gibt alle Dateien aus dem Ordner "C:\Scripts" zurück:

Get-ChildItem c:\scripts

Jetzt glauben Sie vielleicht, dass Sie mit Get-ChildItem die untergeordneten Objekte an jeder beliebigen Position abfragen können. Angenommen, Sie wollen alle Werte aus einem Registrierungsschlüssel aufzählen. Der folgende Befehl sieht so aus, als würde er genau das tun:

Get-ChildItem "hklm:\software\microsoft\windows\currentversion\uninstall\windows media player"

Technisch gesehen, funktioniert der Befehl auch – aber er gibt nicht die Daten zurück, die Sie vielleicht erwarten. Statt Informationen über alle Registrierungswerte in diesem Registrierungsschlüssel zurückzugeben, gibt er nur Informationen über alle an dieser Position enthaltenen Unterschlüssel zurück. Und das ist definitiv nicht dasselbe. Es ist so, als ob Sie Get-ChildItem für "C:\Scripts" ausführen würden und nur Informationen über die in diesem Verzeichnis vorhandenen Unterordner erhielten. Get-ChildItem kann Informationen über die Dateien in einem Ordner zurückgeben, weil es speziell für die Arbeit mit dem Dateisystem ausgelegt wurde. Für andere Namespaces (wie beispielsweise die Registrierung) müssen Sie häufig das Cmdlet Get-ItemProperty anwenden, um die gewünschten Informationen zurückzuerhalten.

Hinweis Zugegeben, der Name ist etwas irreführend. Aber zumindest was Registrierungsschlüssel betrifft, betrachtet Windows PowerShell alle einzelnen Registrierungswerte als Eigenschaft dieses Registrierungsschlüssels.

Der folgende Befehl entspricht wahrscheinlich eher Ihren Vorstellungen:

Get-ItemProperty "hklm:\software\microsoft\windows\currentversion\uninstall\windows media player"

Wie Sie sehen, beinhalten die zurückgegebenen Daten die im Registrierungsschlüssel für Windows Media Player gefundenen Registrierungswerte:

DisplayName       : Windows Media Player 10
UninstallString   : "C:\Program Files\Windows Media Player\Setup_wm.exe" /Uninstall
DisplayIcon       : C:\Program Files\Windows Media Player\wmplayer.exe
ParentKeyName     : OperatingSystem
ParentDisplayName : Windows Updates

Und hier folgt ein praktischer kleiner Befehl, der Get-ChildItem verwendet, um eine Sammlung aller im Registrierungsschlüssel "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CyrrentVersion\Uninstall" vorhandenen Unterschlüssel zurückzugeben. Diese Unterschlüsselmenge wird dann an das Cmdlet ForEach-Object weitergereicht. ForEach-Object wiederum ruft für jeden Unterschlüssel das Cmdlet Get-ItemProperty auf. Nachdem alles erledigt ist, gibt dieser Befehl alle Registrierungswerte für alle Unterschlüssel im Registrierungsschlüssel "Uninstall" zurück.

Und so sieht der Befehl aus:

Get-ChildItem hklm:\software\microsoft\windows\currentversion\uninstall | ForEach-Object {Get-ItemProperty $_.pspath}

Aliase für "Get-ItemProperty"

  • gp