about_Registry_Provider
Providernaam
Register
Stations
HKLM:
, HKCU:
Functies
ShouldProcess, UseTransactions
Korte beschrijving
Biedt toegang tot de registersleutels, vermeldingen en waarden in PowerShell.
Gedetailleerde beschrijving
Met de PowerShell-registerprovider kunt u registersleutels, vermeldingen en waarden in PowerShell ophalen, toevoegen, wijzigen, wissen en verwijderen.
De registerstations zijn een hiërarchische naamruimte met de registersleutels en subsleutels op uw computer. Registervermeldingen en -waarden zijn geen onderdelen van die hiërarchie. In plaats daarvan zijn ze eigenschappen van elk van de sleutels.
De registerprovider ondersteunt de volgende cmdlets:
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Item aanroepen
- Item verplaatsen
- Nieuw item
- Item verwijderen
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
Typen die door deze provider worden weergegeven
De registerprovider retourneert registergegevens in een van de volgende twee typen:
- Microsoft.Win32.RegistryKey voor registersleutels
- PSCustomObject voor registerwaarden
Navigeren door de registerstations
De registerprovider stelt het gegevensarchief beschikbaar als twee standaardstations.
-
HKLM:
wordt toegewezen aan deHKEY_LOCAL_MACHINE
register hive -
HKCU:
wordt toegewezen aan deHKEY_CURRENT_USER
register hive
Als u met het register wilt werken, kunt u uw locatie wijzigen in het HKLM:
station met behulp van de volgende opdracht.
Set-Location HKLM:
Als u wilt terugkeren naar een bestandssysteemstation, typt u de naam van het station. Typ bijvoorbeeld:
Set-Location C:
U kunt ook met de registerprovider werken vanaf een ander PowerShell-station. Als u wilt verwijzen naar een registersleutel vanaf een andere locatie, gebruikt u de stationsnaam (HKLM:
, HKCU:
) in het pad. Gebruik een backslash (\
) of een slash (/
) om een niveau van het registerstation aan te geven.
PS C:\> cd HKLM:\Software
Notitie
PowerShell maakt gebruik van aliassen om u een vertrouwde manier te bieden om met providerpaden te werken. Opdrachten zoals dir
en ls
zijn aliassen voor Get-ChildItem, cd
is een alias voor Set-Location en pwd
is een alias voor Get-Location.
In dit laatste voorbeeld ziet u een andere padsyntaxis die u kunt gebruiken om door de registerprovider te navigeren. Deze syntaxis maakt gebruik van de providernaam, gevolgd door twee dubbele punten ::
. Met deze syntaxis kunt u de volledige HIVE-naam gebruiken, in plaats van de naam HKLM
van het toegewezen station.
cd "Registry::HKEY_LOCAL_MACHINE\Software"
De inhoud van registersleutels weergeven
Het register is onderverdeeld in sleutels, subsleutels en vermeldingen. Zie Structuur van het register voor meer informatie over registerstructuur.
In een registerstation is elke sleutel een container. Een sleutel kan een willekeurig aantal sleutels bevatten. Een registersleutel met een bovenliggende sleutel wordt een subsleutel genoemd. U kunt Get-ChildItem
registersleutels weergeven en Set-Location
naar een sleutelpad navigeren.
Registerwaarden zijn kenmerken van een registersleutel. In het registerstation worden ze itemeigenschappen genoemd. Een registersleutel kan zowel onderliggende sleutels als itemeigenschappen hebben.
In dit voorbeeld wordt het verschil tussen Get-Item
en Get-ChildItem
weergegeven. Wanneer u de registersleutel 'Spooler' gebruikt Get-Item
, kunt u de eigenschappen ervan bekijken.
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
Elke registersleutel kan ook subsleutels bevatten. Wanneer u een registersleutel gebruikt Get-Item
, worden de subsleutels niet weergegeven. In Get-ChildItem
de cmdlet worden subsleutels van de sleutel 'Spooler' weergegeven, inclusief de eigenschappen van elke subsleutel. De eigenschappen van de bovenliggende sleutels worden niet weergegeven wanneer u deze gebruikt Get-ChildItem
.
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...}
De Get-Item
cmdlet kan ook worden gebruikt op de huidige locatie. In het volgende voorbeeld gaat u naar de registersleutel 'Spooler' en haalt u de itemeigenschappen op.
De punt .
wordt gebruikt om de huidige locatie aan te geven.
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
...
Zie de volgende artikelen voor meer informatie over de cmdlets die in deze sectie worden behandeld.
Registersleutelwaarden weergeven
Registersleutelwaarden worden opgeslagen als eigenschappen van elke registersleutel. De Get-ItemProperty
cmdlet geeft registersleuteleigenschappen weer met behulp van de naam die u opgeeft. Het resultaat is een PSCustomObject met de eigenschappen die u opgeeft.
In het volgende voorbeeld wordt de Get-ItemProperty
cmdlet gebruikt om alle eigenschappen weer te geven. Als u het resulterende object opslaat in een variabele, hebt u toegang tot de gewenste eigenschapswaarde.
$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http
Als u een waarde voor de -Name
parameter opgeeft, worden de eigenschappen geselecteerd die u opgeeft en wordt het PSCustomObject geretourneerd. In het volgende voorbeeld ziet u het verschil in uitvoer wanneer u de -Name
parameter gebruikt.
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
Vanaf PowerShell 5.0 retourneert de Get-ItemPropertyValue
cmdlet alleen de waarde van de eigenschap die u opgeeft.
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1
Zie de volgende artikelen voor meer informatie over de cmdlets die in deze sectie worden gebruikt.
Registersleutelwaarden wijzigen
Met de Set-ItemProperty
cmdlet worden registerwaarden ingesteld die zijn gekoppeld aan een registersleutel. In het volgende voorbeeld wordt het Set-ItemProperty
begintype van de spooler-service gewijzigd in handmatig. In het voorbeeld wordt het StartType weer gewijzigd in Automatic
het gebruik van de Set-Service
cmdlet.
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
Elke registersleutel heeft een standaardwaarde . U kunt de default
waarde voor een registersleutel wijzigen met Set-Item
of Set-ItemProperty
.
Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"
Zie de volgende artikelen voor meer informatie over de cmdlets die in deze sectie worden gebruikt.
Registersleutels en -waarden maken
De New-Item
cmdlet maakt nieuwe registersleutels met een naam die u opgeeft.
U kunt ook de mkdir
functie gebruiken, waarmee de New-Item
cmdlet intern wordt aangeroepen.
mkdir ContosoCompany
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
ContosoCompany
U kunt de New-ItemProperty
cmdlet gebruiken om waarden te maken in een registersleutel die u opgeeft. In het volgende voorbeeld wordt een nieuwe DWORD-waarde gemaakt op de registersleutel ContosoCompany.
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1
Notitie
Bekijk de sectie met dynamische parameters in dit artikel voor andere toegestane typewaarden.
Zie New-ItemProperty voor meer informatie over het gebruik van cmdlets.
Registersleutels en -waarden kopiëren
Gebruik in de registerprovider registersleutels en -waarden met de Copy-Item
cmdlet. Gebruik de Copy-ItemProperty
cmdlet om alleen registerwaarden te kopiëren.
Met de volgende opdracht kopieert u de registersleutel Contoso en de eigenschappen ervan naar de opgegeven locatie HKLM:\Software\Fabrikam
.
Copy-Item
maakt de doelsleutel als deze niet bestaat. Als de doelsleutel bestaat, Copy-Item
maakt u een duplicaat van de bronsleutel als een onderliggend item (subsleutel) van de doelsleutel.
Copy-Item -Path HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam
Met de volgende opdracht wordt de Copy-ItemProperty
cmdlet gebruikt om de waarde 'Server' van de 'Contoso'-sleutel te kopiëren naar de sleutel Fabrikam.
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server
Zie de volgende artikelen voor meer informatie over de cmdlets die in deze sectie worden gebruikt.
Registersleutels en -waarden verplaatsen
De Move-Item
en Move-ItemProperty
cmdlets gedragen zich als hun tegenhangers voor kopiëren. Als het doel bestaat, Move-Item
verplaatst u de bronsleutel onder de doelsleutel. Als de doelsleutel niet bestaat, wordt de bronsleutel verplaatst naar het doelpad.
Met de volgende opdracht wordt de sleutel Contoso naar het pad HKLM:\SOFTWARE\Fabrikam
verplaatst.
Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam
Met deze opdracht worden alle eigenschappen verplaatst van HKLM:\SOFTWARE\ContosoCompany
naar HKLM:\SOFTWARE\Fabrikam
.
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *
Zie de volgende artikelen voor meer informatie over de cmdlets die in deze sectie worden gebruikt.
De naam van registersleutels en -waarden wijzigen
U kunt de naam van registersleutels en -waarden wijzigen, net zoals bestanden en mappen.
Rename-Item
wijzigt de naam van registersleutels en Rename-ItemProperty
wijzigt de naam van registerwaarden.
$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam
Beveiligingsdescriptors wijzigen
U kunt de toegang tot registersleutels beperken met behulp van de Get-Acl
en Set-Acl
cmdlets. In het volgende voorbeeld wordt een nieuwe gebruiker met volledig beheer toegevoegd aan de HKLM:\SOFTWARE\Contoso
registersleutel.
$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
Zie de volgende artikelen voor meer voorbeelden en gebruiksgegevens voor cmdlets.
Registersleutels en -waarden verwijderen en wissen
U kunt ingesloten items verwijderen met behulp van Remove-Item
. U wordt gevraagd de verwijdering te bevestigen als het item iets anders bevat. In het volgende voorbeeld wordt geprobeerd een sleutel HKLM:\SOFTWARE\Contoso
te verwijderen.
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"):
Als u ingesloten items wilt verwijderen zonder te vragen, geeft u de -Recurse
parameter op.
Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse
Als u alle items binnen HKLM:\SOFTWARE\Contoso
maar niet HKLM:\SOFTWARE\Contoso
zelf wilt verwijderen, gebruikt u een afsluitende backslash \
gevolgd door een jokerteken.
Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse
Met deze opdracht wordt de registerwaarde ContosoTest uit de HKLM:\SOFTWARE\Contoso
registersleutel verwijderd.
Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest
Clear-Item
wist alle registerwaarden voor een sleutel. In het volgende voorbeeld worden alle waarden uit de HKLM:\SOFTWARE\Contoso
registersleutel gewist. Als u alleen een specifieke eigenschap wilt wissen, gebruikt u Clear-ItemProperty
.
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
Zie de volgende artikelen voor meer voorbeelden en gebruiksgegevens voor cmdlets.
Dynamische parameters
Dynamische parameters zijn cmdlet-parameters die worden toegevoegd door een PowerShell-provider en zijn alleen beschikbaar wanneer de cmdlet wordt gebruikt in het station met provider.
Type <Microsoft.Win32.RegistryValueKind>
Hiermee wordt het gegevenstype van een registerwaarde vastgesteld of gewijzigd. De standaardwaarde is String
(REG_SZ).
Deze parameter werkt zoals ontworpen voor de cmdlet Set-ItemProperty . Het is ook beschikbaar op de cmdlet Set-Item in de registerstations, maar dit heeft geen effect.
-
String
- Wordt gebruikt voor REG_SZ waarden. Geef een[System.String]
object door aan de parameter Waarde . -
ExpandString
- Wordt gebruikt voor REG_EXPAND_SZ waarden. Geef een[System.String]
object door aan de parameter Waarde . De tekenreeks moet niet-uitgevouwen verwijzingen bevatten naar omgevingsvariabelen die worden uitgebreid wanneer de waarde wordt opgehaald. -
Binary
- Wordt gebruikt voor REG_BINARY waarden. Geef een[System.Byte[]]
object door aan de parameter Waarde . -
DWord
- Wordt gebruikt voor REG_DWORD waarden. Geef een[System.Int32]
object door aan de parameter Waarde . -
MultiString
- Wordt gebruikt voor REG_MULTI_SZ waarden. Geef een[System.String[]]
object door aan de parameter Waarde . -
QWord
- Wordt gebruikt voor REG_QWORD waarden. Geef een[System.Int64]
object door aan de parameter Waarde . -
Unknown
- Geeft een niet-ondersteund registergegevenstype aan, zoals REG_RESOURCE_LIST waarden.
De pijplijn gebruiken
Provider-cmdlets accepteren pijplijninvoer. U kunt de pijplijn gebruiken om de taak te vereenvoudigen door providergegevens van de ene cmdlet naar een andere provider-cmdlet te verzenden. Zie de cmdlet-verwijzingen in dit artikel voor meer informatie over het gebruik van de pijplijn met provider-cmdlets.
Hulp krijgen
Vanaf Windows PowerShell 3.0 kunt u aangepaste Help-onderwerpen krijgen voor provider-cmdlets die uitleggen hoe deze cmdlets zich gedragen in een bestandssysteemstation.
Als u de Help-onderwerpen wilt ophalen die zijn aangepast voor het bestandssysteemstation, voert u een Get-Help
opdracht uit op een bestandssysteemstation of gebruikt u de parameter Path om een bestandssysteemstation op te geven.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM: