Freigeben über


about_Registry_Provider

Anbietername

Registrierung

Antriebe

HKLM:, HKCU:

Fähigkeiten

ShouldProcess, UseTransactions-

Kurzbeschreibung

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 Registry Laufwerke 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 der einzelnen Schlüssel.

Der -Registrierungsanbieter unterstützt die folgenden Cmdlets:

Typen, die von diesem Anbieter verfügbar gemacht werden

Der Registry Anbieter gibt Registrierungsdaten in einem von zwei Typen zurück:

Der Registry Provider macht seinen Datenspeicher als zwei Standardlaufwerke verfügbar.

  • HKLM: der HKEY_LOCAL_MACHINE Registrierungsstruktur zugeordnet
  • HKCU: der HKEY_CURRENT_USER Registrierungsstruktur 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 Laufwerknamen ein. Geben Sie beispielsweise Folgendes ein:

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

Anmerkung

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

In diesem letzten Beispiel wird eine weitere Pfadsyntax gezeigt, mit der Sie im Registrierungsanbieter navigieren 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 Structure of the Registry.

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 verwenden, um Registrierungsschlüssel anzuzeigen und Set-Location, um zu einem Schlüsselpfad zu navigieren.

Registrierungswerte sind Attribute eines Registrierungsschlüssels. Im Registrierungs- Laufwerk werden sie Elementeigenschaftenaufgerufen. Ein Registrierungsschlüssel kann sowohl untergeordnete Schlüssel als auch Elementeigenschaften aufweisen.

In diesem Beispiel wird der Unterschied zwischen Get-Item und Get-ChildItem angezeigt. Wenn Sie Get-Item für den Registrierungsschlüssel "Spooler" verwenden, 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 Get-Item für einen Registrierungsschlüssel verwenden, werden die Unterschlüssel nicht angezeigt. Das Cmdlet Get-ChildItem zeigt Unterschlüssel des Schlüssels "Spooler" an, einschließlich der Eigenschaften der einzelnen Unterschlüssel. Die Eigenschaften der übergeordneten Schlüssel werden bei Verwendung von 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 Cmdlet Get-Item 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. Die Get-ItemProperty Cmdlet zeigt Registrierungsschlüsseleigenschaften mithilfe des angegebenen Namens an. Das Ergebnis ist ein PSCustomObject- mit den von Ihnen angegebenen Eigenschaften.

Im folgenden Beispiel wird das Cmdlet Get-ItemProperty 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 parameter -Name 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 parameter -Name 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 cmdlet Get-ItemPropertyValue 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 Cmdlet Set-ItemProperty legt Registrierungswerte fest, die einem Registrierungsschlüssel zugeordnet sind. Im folgenden Beispiel wird Set-ItemProperty verwendet, um den Starttyp des Spoolerdiensts manuell zu ändern. Im Beispiel wird die StartType- mithilfe des Cmdlets Automatic wieder in Set-Service 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 Standard- Wert auf. Sie können den default Wert für einen Registrierungsschlüssel mit Set-Item oder Set-ItemPropertyändern.

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 Cmdlet New-Item erstellt neue Registrierungsschlüssel mit einem von Ihnen bereitgestellten Namen. 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 cmdlet New-ItemProperty 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

Anmerkung

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

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

Kopieren von Registrierungsschlüsseln und -werten

Verwenden Sie im Registry-Anbieters die Copy-Item Cmdlet registrierungsschlüssel und -werte kopiert. Verwenden Sie das Cmdlet Copy-ItemProperty, um Registrierungswerte nur zu kopieren. Mit dem folgenden Befehl wird der Registrierungsschlüssel "Contoso" und seine Eigenschaften an den angegebenen Speicherort HKLM:\Software\Fabrikamkopiert.

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

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

Der folgende Befehl verwendet das Cmdlet Copy-ItemProperty, 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, verschiebt Move-Item den Quellschlüssel unter den Zielschlüssel. 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

Mit diesem Befehl werden alle Eigenschaften von HKLM:\SOFTWARE\ContosoCompany in HKLM:\SOFTWARE\Fabrikamverschoben.

$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 Registrierungsschlüssel umbenennen, während Rename-ItemProperty Registrierungswerte umbenennen.

$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 cmdlets Get-Acl und Set-Acl einschränken. Im folgenden Beispiel wird dem registrierungsschlüssel HKLM:\SOFTWARE\Contoso ein neuer Benutzer mit Vollzugriff 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

Sie können enthaltene Elemente mithilfe von Remove-Itementfernen. Sie werden aufgefordert, die Entfernung zu bestätigen, wenn das Element etwas anderes 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 wasn't 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"):

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

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

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

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

Mit diesem Befehl wird der Registrierungswert "ContosoTest" aus dem registrierungsschlüssel HKLM:\SOFTWARE\Contoso 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 registrierungsschlüssel HKLM:\SOFTWARE\Contoso gelöscht. Verwenden Sie 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->

Richtet den Datentyp eines Registrierungswerts ein oder ändert den Datentyp. 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 in den Registrierungslaufwerken verfügbar, hat aber keine Auswirkung.

  • String – Wird für REG_SZ Werte verwendet. Übergeben Sie ein [System.String]-Objekt an den Parameter Value.
  • ExpandString – Wird für REG_EXPAND_SZ Werte verwendet. Übergeben Sie ein [System.String]-Objekt an den Parameter Value. Die Zeichenfolge sollte nicht erweiterte Verweise auf Umgebungsvariablen enthalten, die beim Abrufen des Werts erweitert werden.
  • Binary – Wird für REG_BINARY Werte verwendet. Übergeben Sie ein [System.Byte[]]-Objekt an den Parameter Value.
  • DWord – Wird für REG_DWORD Werte verwendet. Übergeben Sie ein [System.Int32]-Objekt an den Parameter Value.
  • MultiString – Wird für REG_MULTI_SZ Werte verwendet. Übergeben Sie ein [System.String[]]-Objekt an den Parameter Value.
  • QWord – Wird für REG_QWORD Werte verwendet. Übergeben Sie ein [System.Int64]-Objekt an den Parameter Value.
  • Unknown – Gibt einen nicht unterstützten Registrierungsdatentyp an, z. B. REG_RESOURCE_LIST Werte.

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 erhalten

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:

Siehe auch