Registry-Schlüssel hinzufügen und löschen mit Powershell

    Die Powershell verfügt über einen Provider für die Registrierdatenbank, so dass sich einzelne Teilbäume ("Hives") wie Laufwerke mounten lassen. Anschließend kann man durch die Verzeichnisstruktur navigieren wie im Dateisystem und dort neue Schlüssel anlegen oder vorhandene löschen.

    Standardmäßig sind die Bäume unterhalb von HKEY_CURRENT_USER (HKCU) und HKEY_LOCAL_MACHINE (HKLM) bereits zugänglich, wie man sich durch den Aufruf von

    Get-PSDrive -PSProvider Registry

    überzeugen kann. Daher steht anschließend einer Navigation durch die Struktur der Registry nicht mehr im Wege. Dazu bedient man sich der gleichen Mittel wie im Dateisystem, also der Befehle Get-Childitem (oder des Alias dir) und Set-Location (bzw. des Alias cd), beispielsweise

    Set-Location HKLM:\Software

    Praktisch ist dabei, dass die Powershell auch hier die Autovervollständigung von Schlüsseln mittels TAB-Taste unterstützt, so dass man lange Namen nicht vollständig eintippen muss.

    Existenz eines Schlüssels prüfen

    Möchte man einen neuen Schlüssel anlegen oder einen vorhandenen löschen, dann empfiehlt es sich besonders in Scripts, sich davon zu überzeugen, ob er bereits vorhanden ist. Dies kann man über das Cmdlet Test-Path erledigen:

    Test-Path HKLM:\Software\Microsoft\"NET Framework Setup"\NDP

    Der Aufruf gibt abhängig davon, ob der Schlüssel existiert, die Werte true oder false zurück. Möchte man zusätzlich herausfinden, ob es sich bei diesem Knoten um ein Verzeichnis handelt, das selbst weitere Elemente enthalten kann, oder um ein einen Schlüssel ohne weitere Kindknoten, verwendet man zusätzlich den Parameter -pathtype mit den Werten container oder leaf.

    Neuen Schlüssel und Wert anlegen

    Um einen neuen Schlüssel anzulegen, nutzt man das Cmdlet New-Item bzw. den Alias md:

    New-Item HKCU:\Software\Microsoft\Test

    Dieser Aufruf legt einen leeren Key mit dem Namen Test unterhalb von HKCU:\Software\Microsoft an.

    Möchte man nun in diesem Schlüssel einen neuen Wert anlegen, dann ist dafür das Cmdlet New-ItemProperty zuständig. Über die Parameter Path, Name, Type und Value legt man die gewünschten Eigenschaften fest. Ein Befehl könnte so aussehen:

    New-ItemProperty -Type DWord -Path HKCU:\Software\Microsoft\Test -Name Temp -value "1"

    Anstelle von DWord (REG_DWORD) sind auch die Typen ExpandString (REG_EXPAND_SZ), Binary (REG_BINARY), String, MultiString (REG_MULTI_SZ) und QWord (REG_QWORD) zulässig.

    Bestehenden Schlüssel löschen

    Um bestehende Schlüssel zu entfernen, nutzt man das Cmdlet Remove-Item (oder das Alias del):

    Remove-Item HKCU:\Software\Test

    Enthält der Key weitere Kindknoten, dann muss man deren Löschen interaktiv bestätigen, es sei man gibt zusätzlich den Parameter -recurse an.

    1 Kommentar

    Bild von Philipp Reichelt
    Philipp Reichelt sagt:
    8. Februar 2013 - 9:37

    Könnte man in diese Seite nicht noch "New-ItemProperty" aufnehmen? Das hat mir an dieser Stelle gefehlt.

    Beste Grüße
    Philipp Reichelt