So rufen Sie Registrierungswerte mit PowerShell ab
Die Arbeit mit Registry-Werten unter Windows fühlt sich oft an wie der Versuch, eine Fremdsprache zu entschlüsseln. Manche Registry-Schlüssel sind hinter komplexen Strukturen verborgen, und es reicht nicht immer aus, nur die richtigen PowerShell-Befehle zu kennen – insbesondere bei der Fehlersuche oder Automatisierung. Es ist ziemlich ärgerlich, wenn die Befehle zum Abrufen dieser Werte nicht wie erwartet funktionieren oder unverständliche Fehlermeldungen ausgeben. Dieser Leitfaden bietet daher eine Sammlung bewährter Methoden zum zuverlässigen Extrahieren von Registry-Informationen, selbst wenn die Dinge ungewöhnlich erscheinen. Nach etwas Ausprobieren dieser Methoden können Sie Registry-Einträge problemlos überprüfen, abfragen oder einfach nur ansehen. Der Schlüssel liegt darin, zu verstehen, wann und warum welche Methode funktioniert – denn manchmal ist der einfachste Befehl derjenige, der fehlschlägt, und Sie müssen Ihre Vorgehensweise ändern. Sie erhalten einen besseren Einblick in die Registry-Struktur, was hilfreich sein kann, wenn Sie Autostart-Einträge deaktivieren, Installationszustände überprüfen oder einfach nur ungewöhnliches Windows-Verhalten beheben möchten.
Wie man in PowerShell auf Registrierungsschlüsselwerte zugreift, ohne den Verstand zu verlieren
Test-Path – Existiert dieser Registrierungspfad überhaupt?
Dieser Teil ist zwar recht simpel, aber äußerst nützlich. Das Windows PowerShell- Test-PathCmdlet prüft zunächst, ob ein Registrierungsschlüssel oder -wert existiert, bevor komplexere Aktionen ausgeführt werden. Es eignet sich hervorragend für Skripte, insbesondere zur Fehlerbehandlung. Man führt beispielsweise einen Befehl wie `$key` aus Test-Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run, und wenn der Schlüssel vorhanden ist, erhält man `$true`. Fehlt er, erhält man `$false`. Manchmal enthält der Pfad Leerzeichen oder Sonderzeichen. In diesem Fall sollte der Pfad in doppelte Anführungszeichen gesetzt werden: ` $key::`.Ich habe Fälle erlebt, in denen ein Pfad technisch korrekt war, PowerShell aber aufgrund fehlender Berechtigungen oder Tippfehler `$false`Test-Path "HKLM:\Some\Really Weird Path" ausgab. Dennoch ist es ein solider erster Schritt, um Skriptabstürze oder die Ausführung von Befehlen für nicht vorhandene Schlüssel zu vermeiden. In manchen Konfigurationen ist es etwas unzuverlässig, aber im Allgemeinen trägt es zu einer übersichtlichen Struktur bei.
Test-RegistryValue — Ist der gewünschte Wert tatsächlich vorhanden?
Das Prüfen eines bestimmten Registrierungswerts ist nicht immer so einfach wie das Überprüfen eines Pfads – manchmal geht es darum, ob eine bestimmte Zeichenkette oder Zahl im Schlüssel gespeichert ist. Die folgende Funktion (die Sie kopieren oder anpassen können) hilft Ihnen dabei. Sie funktioniert, weil sie versucht, eine bestimmte Eigenschaft (z. B.ein Startelement oder ein Konfigurationsflag) abzurufen und Ihnen dann mitteilt, ob diese vorhanden ist. Das ist beispielsweise nützlich, wenn Sie sicherstellen möchten, dass ein bestimmtes Programm beim Anmelden ausgeführt wird oder dass ein bestimmtes Feature-Flag aktiviert ist. Die Syntax sieht folgendermaßen aus:
Function Test-RegistryValue ($regkey, $name) { if (Get-ItemProperty -Path $regkey -Name $name -ErrorAction Ignore) { $true } else { $false } }
Ersetzen Sie also $regkey<Registry-Pfad> durch Ihren Registrierungspfad, z. B.HKCU:\Software\IhreApp, und $name<Wert> durch den gewünschten Wert, z. B.„ Aktiviert“. Auf einem Rechner funktioniert dies möglicherweise sofort, auf einem anderen sind eventuell Administratorrechte erforderlich. Es mag etwas ungewöhnlich klingen, aber Sie werden überrascht sein, wie oft diese kleine Überprüfung Ihnen beim Skripten oder der Fehlersuche viel Ärger erspart.
Reg Query – Befehlszeile und PowerShell endlich vereint
Wenn PowerShell-Befehle nicht ausreichen oder Sie die altbewährte Methode bevorzugen, reg queryist `src` nach wie vor praktisch. Es handelt sich um ein Befehlszeilenprogramm, das den Inhalt eines Registrierungsschlüssels ausgibt und sich daher ideal für schnelle Überprüfungen oder Skripte aus Batchdateien eignet. Wenn Sie beispielsweise `src` ausführen reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run", werden alle Autostart-Einträge unter diesem Schlüssel aufgelistet. Wichtig ist, PowerShell oder die Eingabeaufforderung gelegentlich als Administrator auszuführen, insbesondere wenn Berechtigungen den Zugriff blockieren.Invoke-Expression 'reg query...'Bei Bedarf können Sie den Befehl auch in PowerShell einbinden. Es ist zwar etwas altmodisch, aber äußerst zuverlässig, um eine umfangreiche Liste zu erhalten oder einfach zu überprüfen, ob ein Schlüssel oder Wert korrekt eingerichtet ist.
Get-Item und verwandte Befehle – Die Leistungsfähigkeit von PowerShell für den Registrierungszugriff
Ich bin ein großer Fan von `Get-ItemPropertyValue` Get-Itemund `Get-ChildItem` Get-ItemProperty, da sie eine benutzerfreundlichere Art bieten, Registry-Einträge abzurufen. Es gibt zwei Hauptmethoden, um Werte zu ermitteln: `Get-ItemPropertyValue` und `Get-ChildItem`. Sie liefern unterschiedliche Informationen, sind aber beide zuverlässig.
Get-ItemPropertyValue – Einfach und präzise
Dieser Befehl ist vergleichbar mit der Abfrage eines bestimmten Datenelements: „Hey, welchen Wert hat dieser Registry-Eintrag?“ Um beispielsweise den Chromium- Startcode abzufragen, führen Sie folgenden Befehl aus:
Get-ItemPropertyValue -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run -Name Chromium
Existiert der Registrierungswert, gibt der Befehl seinen Inhalt aus. Andernfalls wird ein Fehler ausgelöst, sofern dieser nicht mit einer Ausnahmebehandlung abgefangen wird -ErrorAction. Ich habe diese Methode verwendet, wenn ich den Wert schnell benötigte, ohne mich durch zahlreiche Unterschlüssel wühlen zu müssen.
Get-ChildItem – Alle Elemente eines Registrierungsschlüssels auflisten
Dies eignet sich gut, um eine vollständige Liste der Unterschlüssel oder Werte innerhalb eines bestimmten Registrierungspfads zu erhalten. Es funktioniert wie eine Verzeichnisauflistung, jedoch für die Registrierung. Führen Sie es wie folgt aus:
Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion
Möchten Sie die Ergebnisse weiter eingrenzen? Sie können Parameter hinzufügen oder mit `–filter` oder `–filter` filtern -Name.-ExcludeUm beispielsweise Einträge zu ignorieren, die mit C beginnen: `–filter` Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion -Exclude C*. Das sieht etwas übersichtlicher aus als die reine Ausgabe der Registrierungsabfrage und ist auf manchen Systemen leichter zu interpretieren.