Met registersleutels werken

Omdat registersleutels items op PowerShell-stations zijn, is het werken met deze stations vergelijkbaar met het werken met bestanden en mappen. Een essentieel verschil is dat elk item op een PowerShell-station op basis van een register een container is, net als een map op een bestandssysteemstation. Registeritems en de bijbehorende waarden zijn echter eigenschappen van de items, geen afzonderlijke items.

Alle subsleutels van een registersleutel in een lijst bekijken

U kunt alle items rechtstreeks in een registersleutel tonen met behulp van Get-ChildItem . Voeg de optionele parameter Force toe om verborgen of systeemitems weer te geven. Met deze opdracht worden de items bijvoorbeeld rechtstreeks in powershell-station HKCU: weergegeven, wat overeenkomt met de HKEY_CURRENT_USER register-hive:

Get-ChildItem -Path HKCU:\ | Select-Object Name
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER

Name
----
HKEY_CURRENT_USER\AppEvents
HKEY_CURRENT_USER\Console
HKEY_CURRENT_USER\Control Panel
HKEY_CURRENT_USER\DirectShow
HKEY_CURRENT_USER\dummy
HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\EUDC
HKEY_CURRENT_USER\Keyboard Layout
HKEY_CURRENT_USER\MediaFoundation
HKEY_CURRENT_USER\Microsoft
HKEY_CURRENT_USER\Network
HKEY_CURRENT_USER\Printers
HKEY_CURRENT_USER\Software
HKEY_CURRENT_USER\System
HKEY_CURRENT_USER\Uninstall
HKEY_CURRENT_USER\WXP
HKEY_CURRENT_USER\Volatile Environment

Dit zijn de sleutels op het hoogste niveau die zichtbaar zijn HKEY_CURRENT_USER onder in de Register-editor ( regedit.exe ).

U kunt dit registerpad ook opgeven door de naam van de registerprovider op te geven, gevolgd door :: . De volledige naam van de registerprovider is , maar dit kan Microsoft.PowerShell.Core\Registry worden ingekort tot alleen Registry . Een van de volgende opdrachten vermeldt de inhoud direct onder HKCU: .

Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKCU
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKCU
Get-ChildItem HKCU:

Met deze opdrachten worden alleen de rechtstreeks opgenomen items weergegeven, net zoals bij het gebruik DIR in Cmd.exe of in ls UNIX shell. Als u ingesloten items wilt tonen, moet u de parameter Recurse opgeven. Gebruik de volgende opdracht om alle registersleutels in HKCU: weer te geven.

Get-ChildItem -Path HKCU:\ -Recurse

Get-ChildItem kan complexe filtermogelijkheden uitvoeren via de parameters Path, Filter, Include en Exclude, maar deze parameters zijn doorgaans alleen gebaseerd op de naam. U kunt complexe filters uitvoeren op basis van andere eigenschappen van items met behulp van de Where-Object cmdlet . Met de volgende opdracht vindt u alle sleutels binnen die niet meer HKCU:\Software dan één subsleutel hebben en die ook exact vier waarden hebben:

Get-ChildItem -Path HKCU:\Software -Recurse |
  Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }

Sleutels kopiëren

Het kopiëren wordt uitgevoerd met Copy-Item . In het volgende voorbeeld wordt de CurrentVersion subsleutel van HKLM:\SOFTWARE\Microsoft\Windows\ en alle eigenschappen ervan gekopieerd naar HKCU:\ .

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:

Als u deze nieuwe sleutel bekijkt in de registereditor of met behulp van , ziet u dat u geen kopieën van de ingesloten Get-ChildItem subsleutels op de nieuwe locatie hebt. Als u alle inhoud van een container wilt kopiëren, moet u de parameter Recurse opgeven. Als u de voorgaande kopieeropdracht recursief wilt maken, gebruikt u deze opdracht:

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU: -Recurse

U kunt nog steeds andere hulpprogramma's gebruiken die u al beschikbaar hebt voor het uitvoeren van kopieën van het bestandssysteem. Alle hulpprogramma's voor registerbewerking, waaronder , , en COM-objecten die registerbewerking ondersteunen, zoals WScript.Shell en de reg.exe regini.exe regedit.exe stdRegProv-klasse van WMI, kunnen worden gebruikt vanuit Windows PowerShell.

Sleutels maken

Het maken van nieuwe sleutels in het register is eenvoudiger dan het maken van een nieuw item in een bestandssysteem. Omdat alle registersleutels containers zijn, hoeft u niet het itemtype op te geven; U hoeft alleen maar een expliciet pad op te geven, zoals:

New-Item -Path HKCU:\Software_DeleteMe

U kunt ook een pad op basis van een provider gebruiken om een sleutel op te geven:

New-Item -Path Registry::HKCU\Software_DeleteMe

Sleutels verwijderen

Het verwijderen van items is in wezen hetzelfde voor alle providers. Met de volgende opdrachten worden items op de stilzwijgend verwijderd:

Remove-Item -Path HKCU:\Software_DeleteMe
Remove-Item -Path 'HKCU:\key with spaces in the name'

Alle sleutels verwijderen onder een specifieke sleutel

U kunt ingesloten items verwijderen met behulp van , maar u wordt gevraagd om het verwijderen te bevestigen als het Remove-Item item iets anders bevat. Als we bijvoorbeeld proberen de subsleutel te HKCU:\CurrentVersion verwijderen die we hebben gemaakt, zien we het volgende:

Remove-Item -Path HKCU:\CurrentVersion
Confirm
The item at HKCU:\CurrentVersion\AdminDebug 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 parameter Recurse op:

Remove-Item -Path HKCU:\CurrentVersion -Recurse

Als u alle items binnen maar niet zelf wilt verwijderen, kunt HKCU:\CurrentVersion u in plaats daarvan het volgende HKCU:\CurrentVersion gebruiken:

Remove-Item -Path HKCU:\CurrentVersion\* -Recurse