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
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 der einzelnen Schlüssel.
Der Registrierungsanbieter unterstützt die folgenden Cmdlets:
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
Typen, die von diesem Anbieter verfügbar gemacht werden
Der Registrierungsanbieter gibt Registrierungsdaten in einem von zwei Typen zurück:
- Microsoft.Win32.RegistryKey für Registrierungsschlüssel
- PSCustomObject für Registrierungswerte
Navigieren in den Registrierungslaufwerken
Der Registrierungsanbieter macht seinen Datenspeicher als zwei Standardlaufwerke verfügbar.
HKLM:
ordnet derHKEY_LOCAL_MACHINE
Registrierungsstruktur zuHKCU:
ordnet derHKEY_CURRENT_USER
Registrierungsstruktur zu
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 ls
sind Aliase für Get-ChildItem, cd
ein Alias für "Set-Location" und pwd
ein Alias für "Get-Location".
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 HKLM
verwenden.
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. 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
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. Das Get-ChildItem
Cmdlet 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 Get-ChildItem
nicht 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.
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 Registrierungswerte fest, die einem Registrierungsschlüssel zugeordnet sind. Im folgenden Beispiel wird Set-ItemProperty
der Starttyp des Spoolerdiensts manuell geändert. Im Beispiel wird der StartType wieder in Automatic
die Verwendung des Cmdlets 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 Standardwert auf. Sie können den default
Wert für einen Registrierungsschlüssel entweder oder Set-Item
Set-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 neue 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\Fabrikam
verschoben.
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
Sie können enthaltene Elemente mithilfe von Remove-Item
. 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\Contoso
zu 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"):
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 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 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.
String
– Wird für REG_SZ-Werte verwendet. Übergeben Sie ein[System.String]
-Objekt an den Parameter Wert.ExpandString
– Wird für REG_EXPAND_SZ-Werte verwendet. Übergeben Sie ein[System.String]
-Objekt an den Parameter Wert. 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 Wert.DWord
– Wird für REG_DWORD-Werte verwendet. Übergeben Sie ein[System.Int32]
-Objekt an den Parameter Wert.MultiString
– Wird für REG_MULTI_SZ-Werte verwendet. Übergeben Sie ein[System.String[]]
-Objekt an den Parameter Wert.QWord
– Wird für REG_QWORD-Werte verwendet. Übergeben Sie ein[System.Int64]
-Objekt an den Parameter Wert.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
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: