about_Registry_Provider
Providernaam
Register
Aandrijfeenheden
HKLM:
, HKCU:
Functies
ShouldProcess, UseTransactions
Korte beschrijving
Biedt toegang tot de registersleutels, vermeldingen en waarden in PowerShell.
Gedetailleerde beschrijving
Deze informatie is alleen van toepassing op PowerShell in Windows.
Met de PowerShell-registerprovider kunt u registersleutels, vermeldingen en waarden ophalen, toevoegen, wijzigen, wissen en verwijderen in PowerShell.
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 het eigenschappen van elk van de sleutels.
De registerprovider ondersteunt de volgende cmdlets, die in dit artikel worden behandeld.
- 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 door deze provider worden weergegeven
Registersleutels worden weergegeven als exemplaren van de klasse Microsoft.Win32.RegistryKey . Registervermeldingen worden weergegeven als exemplaren van de klasse PSCustomObject .
Navigeren door de registerstations
De registerprovider stelt het gegevensarchief beschikbaar als twee standaardstations. De registerlocatie HKEY_LOCAL_MACHINE is toegewezen aan het HKLM:
station en HKEY_CURRENT_USER wordt toegewezen aan het HKCU:
station. Als u met het register wilt werken, kunt u uw locatie naar het HKLM:
station wijzigen 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 elk ander PowerShell-station. Als u wilt verwijzen naar een registersleutel vanaf een andere locatie, gebruikt u de naam van het station (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, zodat u op een vertrouwde manier met providerpaden kunt werken. Opdrachten zoals dir
en ls
zijn nu 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 van het toegewezen station HKLM
.
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 de 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 gebruiken Get-ChildItem
om registersleutels weer te geven en Set-Location
om naar een sleutelpad te navigeren.
Registerwaarden zijn kenmerken van een registersleutel. In het registerstation heten ze Itemeigenschappen. 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 hebben. Wanneer u op een registersleutel gebruikt Get-Item
, worden de subsleutels niet weergegeven. De Get-ChildItem
cmdlet toont onderliggende items van de Spooler-sleutel, inclusief de eigenschappen van elke subsleutel. De eigenschappen van de bovenliggende sleutels worden niet weergegeven wanneer u 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 wordt naar de registersleutel 'Spooler' genavigeert en worden de itemeigenschappen opgehaald.
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. Door het resulterende object op te slaan 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, selecteert u de eigenschappen die u opgeeft en retourneert het PSCustomObject. 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
De Set-ItemProperty
cmdlet stelt kenmerken in voor registersleutels. In het volgende voorbeeld wordt gebruikt Set-ItemProperty
om het starttype van de spooler-service te wijzigen in handmatig. In het voorbeeld wordt StartType weer gewijzigd in Automatisch met behulp 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 standaardwaarde 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 registersleutels met een naam die u opgeeft.
U kunt ook de mkdir
functie gebruiken, die de New-Item
cmdlet intern aanroept.
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 voor de registersleutel ContosoCompany.
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1
Notitie
Raadpleeg de sectie dynamische parameters in dit artikel voor andere toegestane typewaarden.
Zie New-ItemProperty voor gedetailleerd gebruik van cmdlets.
Registersleutels en -waarden kopiëren
Gebruik in de registerprovider de Copy-Item
cmdlet om registersleutels en -waarden te kopiëren. Gebruik de Copy-ItemProperty
cmdlet om alleen registerwaarden te kopiëren.
Met de volgende opdracht kopieert u de registersleutel Contoso en de bijbehorende eigenschappen 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
De volgende opdracht gebruikt de Copy-ItemProperty
cmdlet om de waarde 'Server' te kopiëren van de sleutel 'Contoso' naar de 'Fabrikam'-sleutel.
$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
cmdlets en Move-ItemProperty
gedragen zich als hun 'Copy'-tegenhangers. Als de bestemming 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
cmdlets en Set-Acl
. 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 informatie over het gebruik van cmdlets.
Registersleutels en -waarden verwijderen en wissen
U kunt ingesloten items verwijderen met behulp van Remove-Item
, maar 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 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"):
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 in HKLM:\SOFTWARE\Contoso
maar niet HKLM:\SOFTWARE\Contoso
zichzelf wilt verwijderen, gebruikt u een afsluitende backslash \
gevolgd door een jokerteken.
Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse
Met deze opdracht verwijdert u de registerwaarde ContosoTest uit de HKLM:\SOFTWARE\Contoso
registersleutel.
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 informatie over het gebruik van cmdlets.
Dynamische parameters
Dynamische parameters zijn cmdlet-parameters die worden toegevoegd door een PowerShell-provider en die alleen beschikbaar zijn wanneer de cmdlet wordt gebruikt in het station met provider.
Typ <Microsoft.Win32.RegistryValueKind>
Hiermee wordt het gegevenstype van een registerwaarde ingesteld of gewijzigd. De standaardwaarde is String
(REG_SZ).
Deze parameter werkt zoals is ontworpen voor de cmdlet Set-ItemProperty . Het is ook beschikbaar op de cmdlet Set-Item in de registerstations, maar het heeft geen effect.
Waarde | Beschrijving |
---|---|
String |
Hiermee geeft u een tekenreeks op die is beëindigd met null. Wordt gebruikt voor REG_SZ waarden. |
ExpandString |
Hiermee geeft u een null-beëindigde tekenreeks op die niet-uitgevouwen bevat |
verwijzingen naar omgevingsvariabelen die worden uitgebreid wanneer | |
de waarde wordt opgehaald. Wordt gebruikt voor REG_EXPAND_SZ waarden. | |
Binary |
Hiermee geeft u binaire gegevens in elke vorm. Wordt gebruikt voor REG_BINARY waarden. |
DWord |
Hiermee geeft u een 32-bits binair getal op. Wordt gebruikt voor REG_DWORD waarden. |
MultiString |
Hiermee geeft u een matrix van null-beëindigde tekenreeksen op die zijn beëindigd door |
twee null-tekens. Wordt gebruikt voor REG_MULTI_SZ waarden. | |
QWord |
Hiermee geeft u een 64-bits binair getal op. Wordt gebruikt voor REG_QWORD waarden. |
Unknown |
Geeft een niet-ondersteund registergegevenstype aan, zoals |
REG_RESOURCE_LIST waarden. |
Ondersteunde cmdlets
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.
Ondersteuning vragen
Vanaf Windows PowerShell 3.0 kunt u aangepaste Help-onderwerpen voor provider-cmdlets krijgen waarin wordt uitgelegd hoe deze cmdlets zich gedragen op een bestandssysteemstation.
Als u de Help-onderwerpen wilt ophalen die zijn aangepast voor het bestandssysteemstation, voert u een Get-Help
opdracht uit in een bestandssysteemstation of gebruikt u de padparameter om een bestandssysteemstation op te geven.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM: