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.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Remove-ItemProperty
- Clear-ItemProperty
- Get-Acl
- Set-Acl
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.
Navigieren zu den Registrierungslaufwerken
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 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 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-ChildItem
nicht 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.
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-Item
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 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: