Administratoren können alle typischen Registrierungsvorgänge wahlweise über die gute alte Regedit-Benutzeroberfläche oder mit dem Dienstprogramm reg.exe ausführen. Zusätzlich dazu gibt es noch eine weitere Option: Windows PowerShell. PowerShell stellt zahlreiche Tools für die Interaktion mit der Microsoft Windows-Registrierung auf dem lokalen Computer oder per Remotezugriff zur Verfügung.
In diesem Artikel zeigen wir, wie Sie Registrierungsschlüssel mit PowerShell abrufen, bearbeiten, erstellen und löschen. Sie erfahren außerdem, wie Sie die Registrierung durchsuchen und mit PowerShell von einem Remotecomputer eine Verbindung zur Registrierung herstellen.
Lokales Abrufen der Registrierungsschlüsselwerte mit PowerShell
Um die Werte aller Registrierungsschlüssel auf einem lokalen Computer abzurufen, müssen Sie zunächst den Pfad zur Registrierung ermitteln. So zeigen Sie eine Liste aller lokalen Laufwerke an:
get-psdrive
Wie Sie sehen können, sind zwei Einträge für die Registrierung vorhanden: HKEY_CURRENT_USER (HKCU) und HKEY_LOCAL_MACHINE (HKLM). Hierbei handelt es sich um zwei logische Schlüsselgruppen bzw. Strukturen in der Registrierung.
Sie können deshalb mit dem folgenden Befehl zum Registrierungshauptschlüssel des lokalen Computers navigieren:
cd HKLM:\
Alternativ können Sie mit dem Cmdlet „Set-Location“ als aktuellen Speicherort einen bestimmten Pfad in der Registrierung festlegen:
set-location -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\
Anschließend können Sie mit dem Cmdlet „Get-ChildItem“ alle Registrierungsschlüssel in der aktuellen Struktur mit ihren Eigenschaften ausgeben:
Get-childitem
Um die Parameter für einen bestimmten Schlüssel (z. B. den Schlüssel „Run“) anzuzeigen, verwenden Sie das Cmdlet „Get-Item“ und geben den Pfad an:
Get-Item -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Abrufen von Registrierungsschlüsselwerten per Remotezugriff mit PowerShell
Mit PowerShell können Sie eine Remoteverbindung zur Registrierung eines Computers herstellen und die Registrierung mit WinRM anzeigen. Hierzu verwenden Sie das Cmdlet „Invoke-Command“:
Invoke-Command –ComputerName dc1 –ScriptBlock { Get-ItemProperty -Path 'HKCU:\Software\System' -Name WorkingDirectory}
Bearbeiten der Registrierung per Remotezugriff mit PowerShell
Um eine Registrierung per Remotezugriff zu bearbeiten, müssen Sie zunächst mit dem Cmdlet „Enter-PSSession“ eine Verbindung zur Registrierung herstellen:
Enter-PSSession pdc -Credential Enterprise\T.Simpson
Das System fordert Sie auf, das Kennwort für das angegebene Benutzerkonto einzugeben. Nach der Authentifizierung können Sie auf dem Remotecomputer PowerShell-Befehle ausführen.
Durchsuchen der Registrierung mit PowerShell
Um nach bestimmten Schlüsseln in der Registrierung zu suchen, verwenden Sie ein Skript wie in der Abbildung unten. Damit wird die Registrierung nach Schlüsseln durchsucht, deren Name den Begriff „Netwrix“ enthält:
Set-Itemproperty -path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name 'VMware User Process' -value 'C:\Program Files\VMware\VMware Tools\vmtoolsd.exe'
Bearbeiten der Registrierung mit PowerShell
Um einen Parameter für einen Registrierungsschlüssel zu ändern, verwenden Sie das Cmdlet „Set-ItemProperty“. Mit dem folgenden Befehl können Sie beispielsweise einen neuen Zeichenfolgenwert für den Parameter „VMware User Process“ des Schlüssels „Run“ festlegen:
Set-Itemproperty -path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name 'VMware User Process' -value 'C:\Program Files\VMware\VMware Tools\vmtoolsd.exe'
Erstellen eines Registrierungsschlüssels mit PowerShell
Um einen Schlüssel zur Registrierung hinzuzufügen, verwenden Sie das Cmdlet „New-Item“. So erstellen Sie einen neuen Schlüssel namens „NetwrixKey“ in der Struktur „KEY_CURRENT_USER“:
New-Item –Path "HKCU:\dummy" –Name NetwrixKey
Erstellen Sie nun einen Parameter namens „NetwrixParam“ für diesen neuen Schlüssel und legen Sie als Wert für diesen Parameter die Zeichenfolge „NetwrixValue“ fest:
New-ItemProperty -Path "HKCU:\dummy\NetwrixKey" -Name "NetwrixParam" -Value ”NetwrixValue” -PropertyType "String"
Schauen Sie sich nun das Ergebnis in der Registrierung an:
Löschen eines Registrierungsschlüssels oder Parameters mit PowerShell
Sie werden nun den soeben erstellten Parameter „NetwrixKey“ mit dem Cmdlet „Remove-ItemProperty“ wieder löschen:
Remove-ItemProperty -Path "HKCU:\dummy\NetwrixKey" -Name "NetwrixParam"
Anschließend löschen Sie auch den Schlüssel „NetwrixKey“ selbst:
Remove-Item -Path "HKCU:\dummy\NetwrixKey" -Recurse
Der Parameter „–Recurse“ berechtigt PowerShell zur Löschung aller Unterschlüssel ohne zusätzliche Bestätigung (in diesem Beispiel wurden jedoch keine Unterschlüssel erzeugt).
Wenn Sie alle Unterschlüssel in dem angegebenen Schlüssel löschen möchten, ohne den Schlüssel selbst zu löschen, müssen Sie das Symbol „*“ am Ende des Pfads anfügen:
Remove-Item -Path "HKCU:\dummy\NetwrixKey\*" -Recurse
Umbenennen eines Registrierungsschlüssels oder Parameters mit PowerShell
Zur Umbenennung eines Registrierungsschlüssels verwenden Sie das Cmdlet „Rename-Item“:
Rename-Item -Path "HKCU:\dummy\NetwrixKey" NetwrixNewKey
Um einen Parameter eines Registrierungsschlüssels umzubenennen, verwenden Sie das Cmdlet „Rename –ItemProperty“:
Rename-ItemProperty -Path "HKCU:\dummy\NetwrixKey" -Name "NetwrixParam" -NewName "NetwrixNewParam"
Zusammenfassung
Sie haben nun die grundlegenden Funktionen von Microsoft Windows PowerShell für die Verwaltung der Registrierung kennengelernt. Wie Sie sehen konnten, lassen sich Registrierungsschlüssel mit PowerShell relativ einfach und schnell verwalten. Denken Sie jedoch stets daran, dass bereits geringfügige Änderungen an der Registrierung Ihr System zum Absturz bringen können.
Bevor Sie Änderungen vornehmen, sollten Sie deshalb genau wissen, was Sie ändern, aktuelle Backups Ihres Systems und Ihrer Daten bereithalten sowie alle Änderungen überwachen. Netwrix Auditor for Windows Server kann Sie dabei unterstützen. Die Software überwacht alle Änderungen an der Windows-Registrierung, erfasst diese in Berichten und benachrichtigt Sie über Änderungen.