Eine echte Registry-Suche nach Einträgen

Eine Registry-Suche per PowerShell ist zunächst ganz einfach.

Der folgende Befehl durchsucht den Schlüssel HKey_Local_Machine\Software nach Schlüsseln, deren Name das Wort „Powershell“ enthält.

Das Problem: Die Suche wird nur mit den Schlüsselnamen durchgeführt. Das Ergebnis sind daher auch nur Objekte (vom Typ Microsoft.Win32.RegistryKey), die einzelne Schlüssel repräsentieren, auch wenn die Einträge und Werte jedes Schlüssels mitausgegeben werden.

Wer jetzt denkt, so schwer kann es nicht sein, ich muss lediglich den Output des dir-Kommandos zerlegen bzw. per Where-Object abfragen, so einfach geht es leider nicht. Wie schon oben erwähnt, die Rückgabe besteht aus „nackten“ Microsoft.Win32.RegistryKey-Objekten, an die die Einträge und ihre Werte leider nicht vom Typensystem der PowerShell angehängt werden (vermutlich aus Performancegründen).

Möchte man nach Einträgen suchen, wird es zwangsläufig etwas komplizierter. Für viele leider etwas zu kompliziert. Ich bin selber am Anfang meiner „Karriere“ als PowerShell-Anwender einige Male an einer Lösung gescheitert. Zumindestens an einer, die halbwegs nachvollziehbar war und die ich selber ein paar Monate später noch verstanden habe. Mir war einfach nicht klar, wie ich damit umgehen sollte, dass ein Get-ItemProperty alle Einträge eines Reg-Schlüssels in Gestalt eines PSCustomObject-Objekts zurückgibt, an das die Einträge als Properties angehängt wurden. Die Lösung natürlich: Über die psobject-Eigenschaft.

Ich hoffe, dass die folgende Function nachvollziehbar ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.