about_Registry_Provider

Anbietername

Registrierung

Laufwerke

HKLM:, HKCU:

Capabilities

ShouldProcess, UseTransactions

Kurze Beschreibung

Bietet Zugriff auf die Registrierungsschlüssel, Einträge und Werte in PowerShell.

Detaillierte Beschreibung

Diese Informationen gelten nur für PowerShell, die unter Windows ausgeführt wird.

Mit dem PowerShell-Registrierungsanbieter können Sie Registrierungsschlüssel, Einträge und Werte in PowerShell abrufen, hinzufügen, ändern, löschen und löschen.

Die Registrierungslaufwerke sind ein hierarchischer Namespace, der die Registrierungsschlüssel und Unterschlüssel auf Ihrem Computer enthält. Registrierungseinträge und Werte sind keine Komponenten dieser Hierarchie. Stattdessen sind sie Eigenschaften des jeweiligen Schlüssels.

Der Registrierungsanbieter unterstützt die folgenden Cmdlets, die in diesem Artikel behandelt werden.

Typen, die von diesem Anbieter verfügbar gemacht werden

Registrierungsschlüssel werden als Instanzen der Microsoft.Win32.RegistryKey-Klasse dargestellt. Registrierungseinträge werden als Instanzen der PSCustomObject-Klasse dargestellt.

Der Registrierungsanbieter macht seinen Datenspeicher als zwei Standardlaufwerke verfügbar. Der Registrierungsspeicherort HKEY_LOCAL_MACHINE wird dem HKLM: Laufwerk zugeordnet, und HKEY_CURRENT_USER wird dem HKCU: Laufwerk zugeordnet. Um mit der Registrierung zu arbeiten, können Sie Ihren Speicherort mithilfe des folgenden Befehls auf das HKLM: Laufwerk ändern.

Set-Location HKLM:

Um zu einem Dateisystemlaufwerk zurückzukehren, geben Sie den Namen des Laufwerks ein. Beispiel:

Set-Location C:

Sie können auch mit dem Registrierungsanbieter von jedem anderen PowerShell-Laufwerk aus arbeiten. Um von einem anderen Speicherort aus auf einen Registrierungsschlüssel zu verweisen, verwenden Sie den Laufwerknamen (HKLM:, HKCU:) im Pfad. Verwenden Sie einen umgekehrten Schrägstrich (\) oder einen Schrägstrich (/), um eine Ebene des Registrierungslaufwerks anzugeben.

PS C:\> cd HKLM:\Software

Hinweis

PowerShell verwendet Aliase, damit Sie mit Anbieterpfaden vertraut arbeiten können. Befehle wie dir und sind jetzt Aliase für "Get-ChildItem", cd ein Alias für "Set-Location" und pwd ein Alias für "Get-Locationls".

In diesem letzten Beispiel wird eine weitere Pfadsyntax gezeigt, die Sie zum Navigieren im Registrierungsanbieter verwenden können. Diese Syntax verwendet den Anbieternamen, gefolgt von zwei Doppelpunkten ::. Mit dieser Syntax können Sie den vollständigen HIVE-Namen anstelle des zugeordneten Laufwerknamens HKLMverwenden.

cd "Registry::HKEY_LOCAL_MACHINE\Software"

Anzeigen des Inhalts von Registrierungsschlüsseln

Die Registrierung ist in Schlüssel, Unterschlüssel und Einträge unterteilt. Weitere Informationen zur Registrierungsstruktur finden Sie unter Struktur der Registrierung.

In einem Registrierungslaufwerk ist jeder Schlüssel ein Container. Ein Schlüssel kann eine beliebige Anzahl von Schlüsseln enthalten. Ein Registrierungsschlüssel mit einem übergeordneten Schlüssel wird als Unterschlüssel bezeichnet. Sie können Get-ChildItem Registrierungsschlüssel anzeigen und Set-Location zu einem Schlüsselpfad navigieren.

Registrierungswerte sind Attribute eines Registrierungsschlüssels. Im Registrierungslaufwerk werden sie als Elementeigenschaften bezeichnet. Ein Registrierungsschlüssel kann sowohl untergeordnete Schlüssel als auch Elementeigenschaften aufweisen.

In diesem Beispiel wird der Unterschied zwischen Get-Item und Get-ChildItem dem angezeigt. Wenn Sie den Registrierungsschlüssel "Spooler" verwenden Get-Item , können Sie dessen Eigenschaften anzeigen.

Get-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services


Name        Property
----        --------
Spooler     DependOnService    : {RPCSS, http}
            Description        : @%systemroot%\system32\spoolsv.exe,-2
            DisplayName        : @%systemroot%\system32\spoolsv.exe,-1
            ErrorControl       : 1
            FailureActions     : {16, 14, 0, 0...}
            Group              : SpoolerGroup
            ImagePath          : C:\WINDOWS\System32\spoolsv.exe
            ObjectName         : LocalSystem
            RequiredPrivileges : {SeTcbPrivilege, SeImpersonatePrivilege, ...
            ServiceSidType     : 1
            Start              : 2
            Type               : 27

Jeder Registrierungsschlüssel kann auch Unterschlüssel enthalten. Wenn Sie einen Registrierungsschlüssel verwenden Get-Item , werden die Unterschlüssel nicht angezeigt. Mit dem Get-ChildItem Cmdlet werden untergeordnete Elemente des Schlüssels "Spooler" angezeigt, einschließlich der Eigenschaften der einzelnen Unterschlüssel. Die Eigenschaften der übergeordneten Schlüssel werden bei Verwendung Get-ChildItemnicht angezeigt.

Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler


Name             Property
----             --------
Performance      Close           : PerfClose
                 Collect         : PerfCollect
                 Collect Timeout : 2000
                 Library         : C:\Windows\System32\winspool.drv
                 Object List     : 1450
                 Open            : PerfOpen
                 Open Timeout    : 4000
Security         Security : {1, 0, 20, 128...}

Das Get-Item Cmdlet kann auch am aktuellen Speicherort verwendet werden. Im folgenden Beispiel wird zum Registrierungsschlüssel "Spooler" navigiert und die Elementeigenschaften abgerufen. Der Punkt . wird verwendet, um die aktuelle Position anzugeben.

cd HKLM:\System\CurrentControlSet\Services\Spooler
Get-Item .
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Name             Property
----             --------
Spooler          DependOnService    : {RPCSS, http}
                 Description        : @%systemroot%\system32\spoolsv.exe,-2
...

Weitere Informationen zu den in diesem Abschnitt behandelten Cmdlets finden Sie in den folgenden Artikeln.

-Get-Item -Get-ChildItem

Anzeigen von Registrierungsschlüsselwerten

Registrierungsschlüsselwerte werden als Eigenschaften jedes Registrierungsschlüssels gespeichert. Das Get-ItemProperty Cmdlet zeigt Registrierungsschlüsseleigenschaften mithilfe des von Ihnen angegebenen Namens an. Das Ergebnis ist ein PSCustomObject , das die von Ihnen angegebenen Eigenschaften enthält.

Im folgenden Beispiel wird das Get-ItemProperty Cmdlet verwendet, um alle Eigenschaften anzuzeigen. Durch das Speichern des resultierenden Objekts in einer Variablen können Sie auf den gewünschten Eigenschaftswert zugreifen.

$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http

Wenn Sie einen Wert für den -Name Parameter angeben, werden die von Ihnen angegebenen Eigenschaften ausgewählt und das PSCustomObject zurückgegeben. Das folgende Beispiel zeigt den Unterschied bei der Ausgabe, wenn Sie den -Name Parameter verwenden.

Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem
BUILD                      : 17134.1
Installation Directory     : C:\WINDOWS\system32\WBEM
MOF Self-Install Directory : C:\WINDOWS\system32\WBEM\MOF
PSPath                     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath               : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName                : Wbem
PSDrive                    : HKLM
PSProvider                 : Microsoft.PowerShell.Core\Registry
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
BUILD        : 17134.1
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName  : Wbem
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

Ab PowerShell 5.0 gibt das Get-ItemPropertyValue Cmdlet nur den Wert der von Ihnen angegebenen Eigenschaft zurück.

Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1

Weitere Informationen zu den in diesem Abschnitt verwendeten Cmdlets finden Sie in den folgenden Artikeln.

Ändern von Registrierungsschlüsselwerten

Das Set-ItemProperty Cmdlet legt Attribute für Registrierungsschlüssel fest. Im folgenden Beispiel wird Set-ItemProperty der Starttyp des Spoolerdiensts manuell geändert. Im Beispiel wird der StartType mithilfe des Set-Service Cmdlets wieder in "Automatisch" geändert.

Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler Automatic
$path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
Set-ItemProperty -Path $path -Name Start -Value 3
Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler    Manual
Set-Service -Name Spooler -StartupType Automatic

Jeder Registrierungsschlüssel weist einen Standardwert auf. Sie können den Standardwert für einen Registrierungsschlüssel entweder oder Set-ItemSet-ItemProperty.

Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"

Weitere Informationen zu den in diesem Abschnitt verwendeten Cmdlets finden Sie in den folgenden Artikeln.

Erstellen von Registrierungsschlüsseln und -werten

Das New-Item Cmdlet erstellt Registrierungsschlüssel mit einem Namen, den Sie angeben. Sie können auch die mkdir Funktion verwenden, die das New-Item Cmdlet intern aufruft.

mkdir ContosoCompany
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
ContosoCompany

Sie können das New-ItemProperty Cmdlet verwenden, um Werte in einem von Ihnen angegebenen Registrierungsschlüssel zu erstellen. Im folgenden Beispiel wird ein neuer DWORD-Wert für den Registrierungsschlüssel ContosoCompany erstellt.

$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1

Hinweis

Lesen Sie den Abschnitt "Dynamische Parameter" in diesem Artikel auf andere zulässige Typwerte.

Ausführliche Cmdlet-Verwendung finden Sie unter "New-ItemProperty".

Kopieren von Registrierungsschlüsseln und -werten

Verwenden Sie Copy-Item im Registrierungsanbieter die Kopien von Registrierungsschlüsseln und -werten. Verwenden Sie das Copy-ItemProperty Cmdlet, um Registrierungswerte nur zu kopieren. Der folgende Befehl kopiert den Registrierungsschlüssel "Contoso" und seine Eigenschaften an den angegebenen Speicherort "HKLM:\Software\Fabrikam".

Copy-Item erstellt den Zielschlüssel, wenn er nicht vorhanden ist. Wenn der Zielschlüssel vorhanden ist, Copy-Item wird ein Duplikat des Quellschlüssels als untergeordnetes Element (Unterschlüssel) des Zielschlüssels erstellt.

Copy-Item -Path  HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam

Der folgende Befehl verwendet das Copy-ItemProperty Cmdlet, um den Wert "Server" aus dem Schlüssel "Contoso" in den Schlüssel "Fabrikam" zu kopieren.

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server

Weitere Informationen zu den in diesem Abschnitt verwendeten Cmdlets finden Sie in den folgenden Artikeln.

Verschieben von Registrierungsschlüsseln und -werten

Die Move-Item Und Move-ItemProperty Cmdlets verhalten sich wie ihre "Copy"-Entsprechungen. Wenn das Ziel vorhanden ist, Move-Item wird der Quellschlüssel unter den Zielschlüssel verschoben. Wenn der Zielschlüssel nicht vorhanden ist, wird der Quellschlüssel in den Zielpfad verschoben.

Mit dem folgenden Befehl wird der Schlüssel "Contoso" in den Pfad HKLM:\SOFTWARE\Fabrikamverschoben.

Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam

Dieser Befehl verschiebt alle Eigenschaften von HKLM:\SOFTWARE\ContosoCompany zu HKLM:\SOFTWARE\Fabrikam.

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *

Weitere Informationen zu den in diesem Abschnitt verwendeten Cmdlets finden Sie in den folgenden Artikeln.

Umbenennen von Registrierungsschlüsseln und -werten

Sie können Registrierungsschlüssel und Werte wie Dateien und Ordner umbenennen. Rename-Item benennt Registrierungsschlüssel um, während Rename-ItemProperty Registrierungswerte umbenannt werden.

$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam

Ändern von Sicherheitsbeschreibungen

Sie können den Zugriff auf Registrierungsschlüssel mithilfe der und Set-Acl der Get-Acl Cmdlets einschränken. Im folgenden Beispiel wird dem Registrierungsschlüssel ein neuer Benutzer mit voller Kontrolle HKLM:\SOFTWARE\Contoso hinzugefügt.

$acl = Get-Acl -Path HKLM:\SOFTWARE\Contoso
$rule = New-Object System.Security.AccessControl.RegistryAccessRule `
("CONTOSO\jsmith", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path HKLM:\SOFTWARE\Contoso

Weitere Beispiele und Cmdlet-Verwendungsdetails finden Sie in den folgenden Artikeln.

Entfernen und Löschen von Registrierungsschlüsseln und -werten

Mit Remove-Item können Sie enthaltene Elemente entfernen. Sie werden jedoch aufgefordert, das Entfernen zu bestätigen, wenn ein Element weitere Elemente enthält. Im folgenden Beispiel wird versucht, einen Schlüssel HKLM:\SOFTWARE\Contosozu löschen.

dir HKLM:\SOFTWARE\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso

Name                           Property
----                           --------
ChildKey
Remove-Item -Path HKLM:\SOFTWARE\Contoso
Confirm
The item at HKLM:\SOFTWARE\Contoso has children and the -Recurse
parameter was not specified. If you continue, all children will be removed
with the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Geben Sie den -Recurse Parameter an, um enthaltene Elemente ohne Aufforderung zu löschen.

Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse

Wenn Sie alle Elemente innerhalb, aber nicht HKLM:\SOFTWARE\Contoso selbst HKLM:\SOFTWARE\Contoso entfernen möchten, verwenden Sie einen nachfolgenden umgekehrten Schrägstrich \ gefolgt von einem Wild Karte.

Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse

Mit diesem Befehl wird der Registrierungswert "ContosoTest" aus dem HKLM:\SOFTWARE\Contoso Registrierungsschlüssel gelöscht.

Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest

Clear-Item löscht alle Registrierungswerte für einen Schlüssel. Im folgenden Beispiel werden alle Werte aus dem HKLM:\SOFTWARE\Contoso Registrierungsschlüssel gelöscht. Verwenden Sie die Verwendung Clear-ItemProperty, um nur eine bestimmte Eigenschaft zu löschen.

Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name           Property
----           --------
Contoso        Server     : {a, b, c}
               HereString : {This is text which contains
               newlines. It also contains "quoted" strings}
               (default)  : 1
Clear-Item .\Contoso\
Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
Contoso

Weitere Beispiele und Cmdlet-Verwendungsdetails finden Sie in den folgenden Artikeln.

Dynamische Parameter

Dynamische Parameter sind Cmdlet-Parameter, die von einem PowerShell-Anbieter hinzugefügt werden und nur verfügbar sind, wenn das Cmdlet im vom Anbieter aktivierten Laufwerk verwendet wird.

Geben Sie <"Microsoft.Win32.RegistryValueKind" ein.>

Erstellt oder ändert den Datentyp eines Registrierungswerts. Der Standardwert ist String (REG_SZ).

Dieser Parameter funktioniert wie für das Cmdlet Set-ItemProperty entwickelt. Sie ist auch für das Cmdlet "Set-Item " auf den Registrierungslaufwerken verfügbar, hat aber keine Auswirkung.

Wert Beschreibung
String Gibt eine Null-terminierte Zeichenfolge an. Wird für REG_SZ Werte verwendet.
ExpandString Gibt eine mit Null beendete Zeichenfolge an, die nicht erweitert ist.
Verweise auf Umgebungsvariablen, die erweitert werden, wenn
der Wert wird abgerufen. Wird für REG_EXPAND_SZ Werte verwendet.
Binary Gibt Binärdaten in irgendeiner Form an. Wird für REG_BINARY Werte verwendet.
DWord Gibt eine 32-Bit-Binärzahl an. Wird für REG_DWORD Werte verwendet.
MultiString Gibt ein Array von mit Null beendeten Zeichenfolgen an, die von
zwei Nullzeichen. Wird für REG_MULTI_SZ Werte verwendet.
QWord Gibt eine 64-Bit-Binärzahl an. Wird für REG_QWORD Werte verwendet.
Unknown Gibt einen nicht unterstützten Registrierungsdatentyp an, z. B.
REG_RESOURCE_LIST Werte.

Unterstützte Cmdlets

Verwenden der Pipeline

Anbieter-Cmdlets akzeptieren Pipelineeingaben. Sie können die Aufgabe mithilfe der Pipeline vereinfachen, indem Sie Anbieterdaten von einem Cmdlet an ein anderes Anbieter-Cmdlet senden. Weitere Informationen zur Verwendung der Pipeline mit Anbieter-Cmdlets finden Sie in den Cmdlet-Referenzen in diesem Artikel.

Hilfe

Ab Windows PowerShell 3.0 können Sie benutzerdefinierte Hilfethemen für Anbieter-Cmdlets abrufen, die erläutern, wie sich diese Cmdlets in einem Dateisystemlaufwerk verhalten.

Um die Hilfethemen abzurufen, die für das Dateisystemlaufwerk angepasst sind, führen Sie einen Get-Help Befehl auf einem Dateisystemlaufwerk aus, oder verwenden Sie den Parameter "Path ", um ein Dateisystemlaufwerk anzugeben.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:

Weitere Informationen