PowerShell zum Abrufen eines Registrierungswerts: Eine Tutorial-Durchführung

In diesem Artikel erfahren Sie, wie Sie PowerShell verwenden können, um einen Registry-Wert abzurufen und Einträge in einer Registry mit verschiedenen Methoden abzufragen.

Legen wir los!

Voraussetzungen

Alle Beispiele in diesem Artikel werden mit PowerShell 7.1 durchgeführt, was zum Zeitpunkt der Veröffentlichung des Artikels die neueste Version ist. Sie können auch Windows PowerShell 5.1 verwenden, wenn Sie möchten. Sie sollten auch über grundlegendes Verständnis von PowerShell-Laufwerken verfügen.

Einige Beispiele funktionieren möglicherweise nicht ohne Administratorrechte.

Abrufen von Registry-Schlüsseln und -Werten mit Get-ChildItem

Eine der einfachsten Möglichkeiten, um Registry-Schlüssel und -Werte zu finden, besteht darin, das Get-ChildItem-Cmdlet zu verwenden. Dies ermöglicht es PowerShell, einen Registry-Wert und mehr durch Aufzählen von Elementen in PowerShell-Laufwerken zu erhalten. In diesem Fall ist das PowerShell-Laufwerk das HKLM-Laufwerk, das durch Ausführen von Get-PSDrive gefunden wird.

Führen Sie den folgenden Befehl in einer PowerShell-Konsole aus.

Get-ChildItem -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\'

Auf dem folgenden Screenshot sehen Sie:

  1. Den vollständigen Pfad des WindowsUpdate-Registry-Schlüssels
  2. Den Schlüssel AU
  3. Die Liste der Registry-Einträge im AU-Schlüssel mit den entsprechenden Werten
Getting registry values for Windows Update

Ein schneller Punkt bezüglich des obigen Screenshots. Sie werden möglicherweise feststellen, dass die Ausgabe etwas irreführend ist. Normalerweise repräsentiert die Ausgabe der PowerShell-Konsole Eigenschaften eines Objekts. Get-ChildItem verhält sich in diesem Fall jedoch anders, da dieses Objekt technisch gesehen keine Eigenschaften hat. Zusätzliche Befehle werden im Hintergrund ausgeführt, um das von Ihnen gesehene Anzeigeformat zu erstellen.

Verwandt: Wie man eine ausstehende Neustartprüfung in der Windows-Registrierung durchführt

Abrufen von Registrierungswerten mit Get-ItemProperty

Fahren wir mit demselben Registrierungsschlüssel wie zuvor fort und verwenden diesmal das Cmdlet Get-ItemProperty, um die Ausgabe lesbarer zu gestalten.

Die Verwendung von Get-ItemProperty ist am besten geeignet, um einen Eintragswert zu erhalten, der Schlüssel und deren Werte in der Registrierung abruft. Führen Sie den folgenden Befehl aus:

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'

Im folgenden Screenshot sehen Sie eine Liste der Schlüssel und Werte:

  1. Für den Registrierungscontainer AU
  2. PowerShell-bezogene Eigenschaften, die alle mit PS beginnen
Using Get-ItemProperty in PowerShell to get registry values

Alternativ können Sie auch den Registrierungseintragspfad angeben, um die gleiche Ausgabe etwas schneller unter Verwendung von .NET zu erhalten. Der folgende Befehl verwendet die .NET Registry-Klasse in PowerShell, um einen Registrierungswert abzurufen:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

Abrufen von Registrierungswerten mit Get-ItemPropertyValue

Jetzt ist es an der Zeit, sich die Schlüsselwerte anzusehen. Verwenden Sie das Get-ItemPropertyValue-Cmdlet mit demselben Registrierungscontainer wie zuvor, um den Wert für den Schlüssel NoAutoUpdate zu überprüfen. Führen Sie den folgenden PowerShell-Befehl aus:

Get-ItemPropertyValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\' -Name NoAutoUpdate

Mit Get-ItemPropertyValue erhalten Sie eine prägnantere Ausgabe, die nur den Wert und nicht alle anderen Informationen enthält, die Sie zuvor gesehen haben.

NoAutoUpdate key and the corresponding value

Abfragen der Registrierung ohne PS-Laufwerke

In diesem Tutorial haben Sie bisher PS-Laufwerke verwendet, um mit der Registrierung zu arbeiten. Auf diese Weise ist nicht die einzige Möglichkeit; Sie können auch .NET verwenden und Registrierungsinformationen über .NET-Klassen abrufen!

Zum Beispiel müssen Sie möglicherweise PowerShell verwenden, um einen Registrierungswert von HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ : AutoUpate auf einem Remote-Computer abzurufen.

Dies können Sie mit .NET tun, indem Sie:

  1. Die Verbindung zur Registrierung auf dem Remote-Computer öffnen.
$Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computername)

2. Den spezifischen Registrierungsschlüssel öffnen, den Sie suchen.

$RegistryKey = $Registry.OpenSubKey("SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", $true)

3. Die GetValue()-Methode verwenden, um den Wert des Registrierungswerts innerhalb des Registrierungsschlüssels abzufragen.

$RegistryKey.GetValue('AU')

Die Verwendung von .NET anstelle von PowerShell-Laufwerken ist etwas schneller und eine einfache Möglichkeit, eine Verbindung herzustellen und PowerShell zum Abfragen von Registrierungsschlüsseln und -werten auf Remote-Computern zu verwenden.

Testen von Registrierungswerten mit Test-Path

Manchmal müssen Sie nur überprüfen, ob ein Registrierungswert vorhanden ist. Dies können Sie mit dem Test-Path-Cmdlet tun.

Fahren Sie mit dem WindowsUpdate-Container fort und testen Sie, ob der AU-Container vorhanden ist, indem Sie den folgenden PowerShell-Befehl ausführen:

Test-Path -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'

Wenn das Ergebnis True ist, existiert der Schlüssel oder Container. Aber was ist, wenn Sie einen Wert oder Eintrag testen müssen? Erstellen wir eine benutzerdefinierte Funktion für diesen Test:

Function Test-RegistryValue ($regkey, $name) {
     if (Get-ItemProperty -Path $regkey -Name $name -ErrorAction Ignore) {
         $true
     } else {
         $false
     }
 }

Mit der benutzerdefinierten Funktion geben Sie einen Pfad und den Namen des Schlüssels oder Containers sowie den Wert, den Sie suchen, ein, und die benutzerdefinierte Funktion gibt True oder False (3) zurück, wie im folgenden Screenshot gezeigt:

Enter a key and value to test and return True or False

Weitere Schritte

Beachten Sie, dass Sie in PowerShell die Befehle Get-ChildItem, Get-ItemProperty und Get-ItemPropertyValue verwenden können, um einen Registry-Wert und Schlüssel abzurufen. Was können Sie noch tun?

Wenn Sie mehr über die Arbeit mit der Registrierung in PowerShell erfahren möchten, schauen Sie sich den Artikel von Microsoft Docs mit dem Titel „Arbeiten mit Registrierungsschlüsseln“ an. Sie finden auch eine großartige Demonstration zum Festlegen von Registrierungswerten im ATA-Blogbeitrag Verwendung von Active Setup: Wie man einen Registrierungswert in allen Benutzerzweigen festlegt.

Source:
https://adamtheautomator.com/powershell-to-get-a-registry-value/