Registrierungseinträge stellen Eigenschaften von Schlüsseln dar und daher können nicht direkt durchsucht werden. Aus diesem Grund erfordert das Arbeiten mit Registrierungseinträgen eine etwas andere Herangehensweise.

Auflisten von Registrierungseinträgen

Registrierungseinträge können auf unterschiedliche Weise untersucht werden. Die einfachste Möglichkeit stellt das Abrufen der Eigenschaftennamen für einen Schlüssel dar. Wenn Sie beispielsweise die Namen der Einträge im Registrierungsschlüssel HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion anzeigen möchten, verwenden Sie Get-Item. Registrierungsschlüssel weisen eine Eigenschaft mit dem allgemeinen Namen "Property" auf, bei dem es sich um eine Liste der Registrierungseinträge im Schlüssel handelt. Mit dem folgenden Befehl wird die Property-Eigenschaft ausgewählt, und die Elemente werden erweitert und in einer Liste angezeigt:

PS> Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId

Mit Get-ItemProperty können Sie die Registrierungseinträge in einer besser lesbaren Form anzeigen:

PS> Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion


PSPath              : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows\CurrentVersion
PSParentPath        : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows
PSChildName         : CurrentVersion
PSDrive             : HKLM
PSProvider          : Microsoft.PowerShell.Core\Registry
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
CommonFilesDir      : C:\Program Files\Common Files
ProductId           : 76487-338-1167776-22465
WallPaperDir        : C:\WINDOWS\Web\Wallpaper
MediaPath           : C:\WINDOWS\Media
ProgramFilesPath    : C:\Program Files
PF_AccessoriesName  : Accessories
(default)           :

Alle Windows PowerShell-spezifischen Eigenschaften für den Schlüssel tragen das Präfix "PS", z. B. PSPath, PSParentPath, PSChildName und PSProvider.

Mit der Notation "." können Sie auf den aktuellen Speicherort verweisen. Mit Set-Location können Sie zunächst zum Registrierungscontainer CurrentVersion wechseln:

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Mit Set-Location können Sie auch das integrierte PSDrive "HKLM" verwenden:

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

Anschließend können Sie mit der Notation "." für den aktuellen Speicherort die Eigenschaften auflisten, ohne einen vollständigen Pfad anzugeben:

PS> Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...

Die Pfaderweiterung ist auf die gleiche Weise wie im Dateisystem möglich, sodass Sie an diesem Speicherort mit Get-ItemProperty -Path ..\Help die ItemProperty-Auflistung für HKLM:\SOFTWARE\Microsoft\Windows\Help abrufen können.

Abrufen eines einzelnen Registrierungseintrags

Wenn Sie einen bestimmten Registrierungseintrag in einem Registrierungsschlüssel abrufen möchten, stehen Ihnen verschiedene Möglichkeiten zur Verfügung. In diesem Beispiel wird der Wert von DevicePath in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion gesucht.

Geben Sie anhand von Get-ItemProperty mit dem Path-Parameter den Namen des Schlüssels an, und geben Sie mit dem Name-Parameter den Namen des DevicePath-Eintrags an.

PS> Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath


PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows
PSChildName  : CurrentVersion
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry
DevicePath   : C:\WINDOWS\inf

Mit diesem Befehl werden die Standardeigenschaften von Windows PowerShell sowie die DevicePath-Eigenschaft zurückgegeben.

Hinweis:

Zwar besitzt Get-ItemProperty die Parameter Filter, Include und Exclude, doch können diese nicht zum Filtern nach Eigenschaftennamen verwendet werden. Diese Parameter verweisen auf Registrierungsschlüssel, d. h. auf Elementpfade, nicht auf Registrierungseinträge, bei denen es sich um Elementeigenschaften handelt.

Sie können auch das Befehlszeilentool "Reg.exe" verwenden. Hilfe zu "reg.exe" erhalten Sie mit dem Befehl reg.exe /? an einer Eingabeaufforderung. Wenn Sie den DevicePath-Eintrag suchen möchten, verwenden Sie "reg.exe" wie im folgenden Befehl dargestellt:

PS> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    DevicePath  REG_EXPAND_SZ   %SystemRoot%\inf

Mit dem WshShell COM-Objekt können Sie einige Registrierungseinträge suchen. Diese Methode kann jedoch nicht für umfangreiche Binärdateien oder Namen von Registrierungseinträgen mit bestimmten Zeichen, z. B. "\", verwendet werden. Fügen Sie den Eigenschaftennamen an den Elementpfad mit dem Trennzeichen "\" an.

PS> (New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

Erstellen neuer Registrierungseinträge

Um dem Schlüssel CurrentVersion den neuen Eintrag "PowerShellPath" hinzuzufügen, verwenden Sie New-ItemProperty mit dem Pfad des Schlüssels, dem Namen des Eintrags und dem Wert des Eintrags. In diesem Beispiel wird der Wert der Windows PowerShell-Variablen $PSHome verwendet, in der der Pfad zum Installationsverzeichnis für Windows PowerShell gespeichert ist.

Mit dem folgenden Befehl können Sie den neuen Eintrag dem Schlüssel hinzufügen. Außerdem werden mit dem Befehl Informationen über den neuen Eintrag zurückgegeben.

PS> New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome


PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows\CurrentVersion
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows
PSChildName    : CurrentVersion
PSDrive        : HKLM
PSProvider     : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0

Für PropertyType muss der Name eines Microsoft.Win32.RegistryValueKind-Enumerationselements in der folgenden Tabelle verwendet werden:

PropertyType-Wert Bedeutung

Binary

Binärdaten

DWord

Eine gültige UInt32-Zahl

ExpandString

Eine Zeichenfolge mit Umgebungsvariablen, die dynamisch erweitert werden

MultiString

Eine mehrzeilige Zeichenfolge

String

Ein Zeichenfolgenwert

QWord

8 Bytes mit Binärdaten

Hinweis:

Sie können mehreren Speicherorten einen Registrierungseintrag hinzufügen, indem Sie für den Path-Parameter ein Array von Werten angeben:

New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome

Sie können auch einen vorhandenen Wert in der Registrierung überschreiben, indem Sie einem New-ItemProperty-Befehl den Force-Parameter hinzufügen.

Umbenennen von Registrierungseinträgen

Wenn Sie den PowerShellPath-Eintrag in "PSHome" umbenennen möchten, verwenden Sie Rename-ItemProperty:

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

Wenn Sie den umbenannten Wert anzeigen möchten, fügen Sie dem Befehl den PassThru-Parameter hinzu.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru

Löschen von Registrierungseinträgen

Mit Remove-ItemProperty können Sie die Registrierungseinträge für PSHome und PowerShellPath löschen:

Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath




Inhaltsverzeichnis