Met registersleutels werkenWorking with Registry Keys

Omdat registersleutels items op Windows PowerShell-stations, lijkt werken met deze erg op werken met bestanden en mappen.Because registry keys are items on Windows PowerShell drives, working with them is very similar to working with files and folders. Een kritieke verschil is dat elk item op een Windows PowerShell register gebaseerde station een container, net als een map op een bestandssysteemstation.One critical difference is that every item on a registry-based Windows PowerShell drive is a container, just like a folder on a file system drive. Registervermeldingen en hun gekoppelde waarden zijn echter eigenschappen van de items, geen verschillende items.However, registry entries and their associated values are properties of the items, not distinct items.

Lijst van alle subsleutels van een registersleutelListing All Subkeys of a Registry Key

U kunt alle items rechtstreeks in een registersleutel weergeven met behulp van Get-ChildItem.You can show all items directly within a registry key by using Get-ChildItem. Voeg de optionele Force parameter worden verborgen items van system.Add the optional Force parameter to display hidden or system items. Met deze opdracht geeft bijvoorbeeld de items rechtstreeks in Windows PowerShell-station HKCU:, dat overeenkomt met het registeronderdeel HKEY_CURRENT_USER:For example, this command displays the items directly within Windows PowerShell drive HKCU:, which corresponds to the HKEY_CURRENT_USER registry hive:

PS> Get-ChildItem -Path hkcu:\

   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER

SKC  VC Name                           Property
---  -- ----                           --------
  2   0 AppEvents                      {}
  7  33 Console                        {ColorTable00, ColorTable01, ColorTab...
 25   1 Control Panel                  {Opened}
  0   5 Environment                    {APR_ICONV_PATH, INCLUDE, LIB, TEMP...}
  1   7 Identities                     {Last Username, Last User ...
  4   0 Keyboard Layout                {}
...

Dit zijn de op het hoogste niveau sleutels zichtbaar onder HKEY_CURRENT_USER in de Register-Editor (Regedit.exe).These are the top-level keys visible under HKEY_CURRENT_USER in the Registry Editor (Regedit.exe).

U kunt ook dit registerpad opgeven door te geven van de naam van de registerprovider, gevolgd door '::'.You can also specify this registry path by specifying the registry provider's name, followed by "::". Volledige naam van de registerprovider Microsoft.PowerShell.Core\register, maar dit kan worden ingekort tot iets register.The registry provider's full name is Microsoft.PowerShell.Core\Registry, but this can be shortened to just Registry. Een van de volgende opdrachten wordt de inhoud rechtstreeks onder HKCU weergeven:Any of the following commands will list the contents directly under 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:

Deze opdrachten alleen de lijst rechtstreeks opgenomen, vergelijkbaar met behulp van Cmd.exe DIR opdracht of ls in een UNIX-shell.These commands list only the directly contained items, much like using Cmd.exe's DIR command or ls in a UNIX shell. Als de opgenomen items weergeven, moet u opgeven de Recurse parameter.To show contained items, you need to specify the Recurse parameter. Als alle registersleutels in HKCU weergeven, gebruikt u de volgende opdracht (deze bewerking kan een zeer lange tijd duren.):To list all registry keys in HKCU, use the following command (This operation can take an extremely long time.):

Get-ChildItem -Path hkcu:\ -Recurse

Get-ChildItem kunt uitvoeren complexe filtermogelijkheden via de pad, Filter, opnemen, en uitsluitenparameters, maar deze parameters doorgaans alleen worden gebaseerd op naam.Get-ChildItem can perform complex filtering capabilities through its Path, Filter, Include, and Exclude parameters, but those parameters are typically based only on name. U kunt uitvoeren complexe filteren op basis van andere eigenschappen van items door de Where-Object cmdlet.You can perform complex filtering based on other properties of items by using the Where-Object cmdlet. De volgende opdracht worden alle sleutels binnen HKCU gevonden:\Software die niet meer dan één subsleutels en hebben exact vier waarden hebben:The following command finds all keys within HKCU:\Software that have no more than one subkey and also have exactly four values:

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

Kopiëren van sleutelsCopying Keys

Kopiëren is klaar met Copy-Item.Copying is done with Copy-Item. De volgende opdracht kopieert HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion en alle bijbehorende eigenschappen naar HKCU:\, voor het maken van een nieuwe sleutel met de naam 'CurrentVersion':The following command copies HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion and all of its properties to HKCU:\, creating a new key named "CurrentVersion":

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

Als u deze nieuwe sleutel in de Register-editor of door onderzoeken Get-ChildItem, zult u zien dat er geen kopieën van de subsleutels opgenomen in de nieuwe locatie.If you examine this new key in the registry editor or by using Get-ChildItem, you will notice that you do not have copies of the contained subkeys in the new location. Om te kopiëren alle van de inhoud van een container, moet u opgeven de Recurse parameter.In order to copy all of the contents of a container, you need to specify the Recurse parameter. Als u de voorgaande opdracht recursieve voor kopiëren, gebruikt u deze opdracht:To make the preceding copy command recursive, you would use this command:

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

U kunt nog andere hulpprogramma's die u hebt al beschikbaar voor het bestandssysteem te kopiëren.You can still use other tools you already have available to perform filesystem copies. Een register bewerkingsopties, met inbegrip van reg.exe regini.exe en regedit.exe—and COM-objecten die ondersteuning bieden voor bewerken (zoals instantie en de WMI-klasse StdRegProv) van het register kan worden gebruikt vanuit Windows PowerShell.Any registry editing tools—including reg.exe, regini.exe, and regedit.exe—and COM objects that support registry editing (such as WScript.Shell and WMI's StdRegProv class) can be used from within Windows PowerShell.

Maken van sleutelsCreating Keys

Nieuwe sleutels maken in het register is eenvoudiger dan het maken van een nieuw item in een bestandssysteem.Creating new keys in the registry is simpler than creating a new item in a file system. Omdat alle registersleutels containers zijn, hoeft u niet het itemtype; opgeven u simpelweg een expliciet pad, zoals:Because all registry keys are containers, you do not need to specify the item type; you simply supply an explicit path, such as:

New-Item -Path hkcu:\software_DeleteMe

U kunt ook een pad op basis van een provider gebruiken een sleutel op te geven:You can also use a provider-based path to specify a key:

New-Item -Path Registry::HKCU_DeleteMe

Verwijderen van sleutelsDeleting Keys

Verwijderen van items is in wezen hetzelfde voor alle providers.Deleting items is essentially the same for all providers. De volgende opdrachten worden items achtergrond verwijderd:The following commands will silently remove items:

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

Alle sleutels onder een specifieke sleutel verwijderenRemoving All Keys Under a Specific Key

U kunt opgenomen items verwijderen met behulp van Item verwijderen, maar u wordt gevraagd om te bevestigen dat de verwijzing wordt verwijderd als het item iets anders bevat.You can remove contained items by using Remove-Item, but you will be prompted to confirm the removal if the item contains anything else. Bijvoorbeeld, als we probeert te verwijderen van de HKCU:\CurrentVersion subsleutel wordt gemaakt, zien we dit:For example, if we attempt to delete the HKCU:\CurrentVersion subkey we created, we see this:

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"):

De opgenomen als items wilt verwijderen zonder dat wordt gevraagd, geeft de -Recurse parameter:To delete contained items without prompting, specify the -Recurse parameter:

Remove-Item -Path HKCU:\CurrentVersion -Recurse

Als u wilt verwijderen van alle artikelen in HKCU:\CurrentVersion maar niet HKCU:\CurrentVersion zelf, kunt u in plaats daarvan gebruiken:If you wanted to remove all items within HKCU:\CurrentVersion but not HKCU:\CurrentVersion itself, you could instead use:

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