Freigeben über


Registrierungsanbieter

Anbietername

Registrierung

Laufwerke

HKLM:, HKCU:

Funktionen

ShouldProcess, UseTransactions

Kurze Beschreibung

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

Detaillierte Beschreibung

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 dem Laufwerk zugeordnet HKCU: ist. Um mit der Registrierung zu arbeiten, können Sie Ihren Speicherort mit dem folgenden Befehl in 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 von jedem anderen PowerShell-Laufwerk aus mit dem Registrierungsanbieter arbeiten. Um von einem anderen Speicherort aus auf einen Registrierungsschlüssel zu verweisen, verwenden Sie den Laufwerksnamen (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, um Ihnen eine vertraute Methode zum Arbeiten mit Anbieterpfaden zu ermöglichen. Befehle wie dir und ls sind jetzt Aliase für Get-ChildItem, cd ist ein Alias für Set-Location und pwd ein Alias für Get-Location.

Dieses letzte Beispiel zeigt eine weitere Pfadsyntax, die Sie verwenden können, um durch den Registrierungsanbieter zu navigieren. 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 verwenden Get-ChildItem , um Registrierungsschlüssel anzuzeigen und Set-Location zu einem Schlüsselpfad zu navigieren.

Registrierungswerte sind Attribute eines Registrierungsschlüssels. Auf dem 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 angezeigt. Wenn Sie den Registrierungsschlüssel "Spooler" verwenden Get-Item , können Sie dessen Eigenschaften anzeigen.

PS C:\ > 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. Das Get-ChildItem Cmdlet zeigt Ihnen untergeordnete Elemente des Schlüssels "Spooler" an, einschließlich der Eigenschaften jedes Unterschlüssels. Die Eigenschaften übergeordneter Schlüssel werden bei Verwendung Get-ChildItemnicht angezeigt.

PS C:\> 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.

PS C:\> cd HKLM:\System\CurrentControlSet\Services\Spooler
PS 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 cmdlets, die in diesem Abschnitt behandelt werden, finden Sie in den folgenden Artikeln.

-Get-Item -Get-ChildItem

Anzeigen von Registrierungsschlüsselwerten

Registrierungsschlüsselwerte werden als Eigenschaften jedes Registrierungsschlüssels gespeichert. Mit dem Get-ItemProperty Cmdlet werden Registrierungsschlüsseleigenschaften unter Verwendung des angegebenen Namens angezeigt. Das Ergebnis ist ein PSCustomObject mit den von Ihnen angegebenen Eigenschaften.

Im folgenden Beispiel wird das Get-ItemProperty Cmdlet verwendet, um alle Eigenschaften anzuzeigen. Wenn Sie das resultierende Objekt in einer Variablen speichern, 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 in der Ausgabe, wenn Sie den -Name -Parameter verwenden.

PS C:\> 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

PS C:\> 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 verwendet, um den Starttyp des Spoolerdiensts in manuell zu ändern. Im Beispiel wird startType mithilfe des Set-Service Cmdlets wieder in Automatisch geändert.

PS C:\> Get-Service spooler | Select-Object Name, StartMode

Name    StartType
----    ---------
spooler Automatic

PS C:\> $path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
PS C:\> Set-ItemProperty -Path $path -Name Start -Value 3
PS C:\> Get-Service spooler | Select-Object Name, StartMode

Name    StartType
----    ---------
spooler    Manual

PS C:\> Set-Service -Name Spooler -StartupType Automatic

Jeder Registrierungsschlüssel hat einen Standardwert . Sie können den Standardwert für einen Registrierungsschlüssel mit oder Set-ItemSet-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 New-Item Cmdlet erstellt Registrierungsschlüssel mit einem von Ihnen angegebenen Namen. Sie können auch die mkdir Funktion verwenden, die das New-Item Cmdlet intern aufruft.

PS HKLM:\SOFTWARE\> 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  -Name Test -Type DWORD -Value 1

Hinweis

Weitere zulässige Typwerte finden Sie im Abschnitt dynamische Parameter in diesem Artikel.

Ausführliche Cmdletnutzung finden Sie unter New-ItemProperty.

Kopieren von Registrierungsschlüsseln und -werten

Verwenden Sie im Registrierungsanbieter das Copy-Item Cmdlet kopiert Registrierungsschlüssel und -werte. Verwenden Sie das Copy-ItemProperty Cmdlet, um nur Registrierungswerte 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 erstellt 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 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 Cmdlets und Move-ItemProperty verhalten sich wie ihre "Copy"-Entsprechungen. Wenn das Ziel vorhanden ist, Move-Item verschiebt der Quellschlüssel unter den Zielschlüssel. Wenn der Zielschlüssel nicht vorhanden ist, wird der Quellschlüssel in den Zielpfad verschoben.

Der folgende Befehl verschiebt den Schlüssel "Contoso" in den Pfad "HKLM:\SOFTWARE\Fabrikam".

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

Dieser Befehl verschiebt alle Eigenschaften von "HKLM:\SOFTWARE\ContosoCompany" in "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 Get-Acl Cmdlets und Set-Acl einschränken. Im folgenden Beispiel wird dem Registrierungsschlüssel "HKLM:\SOFTWARE\Contoso" ein neuer Benutzer mit voller Kontrolle 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 Details zur Verwendung von Cmdlets finden Sie in den folgenden Artikeln.

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

Sie können enthaltene Elemente mithilfe von Remove-Item entfernen, aber Sie werden aufgefordert, die Entfernung zu bestätigen, wenn das Element etwas anderes enthält. Im folgenden Beispiel wird versucht, den Schlüssel "HKLM:\SOFTWARE\Contoso" zu löschen.

PS C:\> dir HKLM:\SOFTWARE\Contoso\

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso

Name                           Property
----                           --------
ChildKey

PS C:\> 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 in "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

Dieser Befehl löscht den Registrierungswert "ContosoTest" aus dem Registrierungsschlüssel "HKLM:\SOFTWARE\Contoso".

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. Um nur eine bestimmte Eigenschaft zu löschen, verwenden Sie Clear-ItemProperty.

PS HKLM:\SOFTWARE\> 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

PS HKLM:\SOFTWARE\> Clear-Item .\Contoso\
PS HKLM:\SOFTWARE\> Get-Item .\Contoso\

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

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

Weitere Beispiele und Details zur Verwendung von Cmdlets finden Sie in den folgenden Artikeln.

Dynamische Parameter

Dynamische Parameter sind Cmdletparameter, die von einem PowerShell-Anbieter hinzugefügt werden und nur verfügbar sind, wenn das Cmdlet auf dem Laufwerk mit Anbieteraktivierung 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 vorgesehen im Cmdlet Set-ItemProperty. Es steht auch im Cmdlet Set-Item in den Registrierungslaufwerken zur Verfügung, aber er hat keine Auswirkungen.

Wert BESCHREIBUNG
String Gibt eine Null-terminierte Zeichenfolge an. Entspricht REG_SZ.
ExpandString Gibt eine null-beendete Zeichenfolge an, die nicht erweitert enthält.
Verweise auf Umgebungsvariablen, die erweitert werden, wenn
der Wert wird abgerufen. Entspricht REG_EXPAND_SZ.
Binary Gibt Binärdaten in irgendeiner Form an. Entspricht REG_BINARY.
DWord Gibt eine 32-Bit-Binärzahl an. Entspricht REG_DWORD.
MultiString Gibt ein Array von NULL-beendeten Zeichenfolgen an, die durch beendet werden
zwei NULL-Zeichen. Entspricht REG_MULTI_SZ.
QWord Gibt eine 64-Bit-Binärzahl an. Entspricht REG_QWORD.
Unknown Gibt einen nicht unterstützten Registrierungsdatentyp an, z. B.
REG_RESOURCE_LIST.

Unterstützte Cmdlets

Verwenden der Pipeline

Anbieter-Cmdlets akzeptieren Pipelineeingaben. Sie können die Pipeline verwenden, um die Aufgabe zu 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-Verweisen 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 in einem Dateisystemlaufwerk aus, oder verwenden Sie den Path-Parameter , um ein Dateisystemlaufwerk anzugeben.

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

Weitere Informationen

about_Providers