Praca z kluczami rejestruWorking with Registry Keys

Ponieważ klucze rejestru są elementy na dyskach środowiska Windows PowerShell, pracy z nimi jest bardzo podobny do pracy z plikami i folderami.Because registry keys are items on Windows PowerShell drives, working with them is very similar to working with files and folders. Jeden krytyczne różnica polega na tym, że każdy element na dysk programu Windows PowerShell opartych na rejestrze jest kontenerem, podobnie jak folder na dysku systemu plików.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. Wpisy rejestru oraz powiązanych wartości, są jednak właściwości elementów nie różne elementy.However, registry entries and their associated values are properties of the items, not distinct items.

Wyświetlanie listy wszystkich jego podkluczy klucza rejestruListing All Subkeys of a Registry Key

Wszystkie elementy bezpośrednio w kluczu rejestru można wyświetlać za pomocą Get-ChildItem.You can show all items directly within a registry key by using Get-ChildItem. Dodaj opcjonalny życie parametru do wyświetlania ukryte lub elementów systemu.Add the optional Force parameter to display hidden or system items. Na przykład to polecenie wyświetla elementy bezpośrednio z poziomu środowiska Windows PowerShell dysku HKCU:, które odpowiada gałęzi HKEY_CURRENT_USER rejestru: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                {}
...

Są widoczne w gałęzi HKEY_CURRENT_USER w Edytorze rejestru (Regedit.exe) klucze najwyższego poziomu.These are the top-level keys visible under HKEY_CURRENT_USER in the Registry Editor (Regedit.exe).

Ta ścieżka rejestru można również określić, określając nazwę dostawcy rejestru, a następnie "::".You can also specify this registry path by specifying the registry provider's name, followed by "::". Pełna nazwa dostawcy rejestru Microsoft.PowerShell.Core\rejestru, ale to może zostać skrócony nieco rejestru.The registry provider's full name is Microsoft.PowerShell.Core\Registry, but this can be shortened to just Registry. Dowolne z poniższych poleceń, wyświetla zawartość bezpośrednio pod HKCU: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:

Te polecenia listy tylko bezpośrednio zawartych w niej elementów, podobnie jak przy użyciu jego Cmd.exe DIR polecenia lub ls w powłoce systemu UNIX.These commands list only the directly contained items, much like using Cmd.exe's DIR command or ls in a UNIX shell. Aby wyświetlić zawartych w niej elementów, należy określić Recurse parametru.To show contained items, you need to specify the Recurse parameter. Aby wyświetlić listę wszystkich kluczy rejestru HKCU, użyj następującego polecenia (Ta operacja może zająć bardzo dużo czasu.):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 można wykonywać złożonych możliwości filtrowania, za pomocą jego ścieżki, filtru, Include, i wykluczyćparametrów, ale te parametry są zwykle tylko na podstawie nazwy.Get-ChildItem can perform complex filtering capabilities through its Path, Filter, Include, and Exclude parameters, but those parameters are typically based only on name. Można wykonać złożone filtrowanie na podstawie innych właściwości elementów za pomocą Where-Object polecenia cmdlet.You can perform complex filtering based on other properties of items by using the Where-Object cmdlet. Polecenie znajduje wszystkie klucze w HKCU:\oprogramowania, które ma nie więcej niż jedną podkluczy, a także mieć dokładnie cztery wartości: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) }

Kopiowanie kluczyCopying Keys

Kopiowanie wykonuje się za pomocą Copy-Item.Copying is done with Copy-Item. Polecenie kopiuje HKLM:\oprogramowania\Microsoft\Windows\CurrentVersion i wszystkie jej właściwości w celu HKCU:\, tworzenie nowy klucz o nazwie "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:

Jeśli należy zbadać ten nowy klucz w Edytorze rejestru lub za pomocą Get-ChildItem, można zauważyć, że nie masz kopii podkluczy zawarte w nowej lokalizacji.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. Aby można było skopiować wszystkie zawartość kontenera, należy określić Recurse parametru.In order to copy all of the contents of a container, you need to specify the Recurse parameter. Aby poprzedniego cykliczne polecenia kopiowania, należy użyć tego polecenia:To make the preceding copy command recursive, you would use this command:

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

Można nadal używać innych narzędzi, masz już dostępne do wykonywania kopii plików.You can still use other tools you already have available to perform filesystem copies. Wszystkie narzędzia do edycji rejestru — tym reg.exe, regini.exe i regedit.exe—and obiektów COM, które obsługuje edycji rejestru (np. Klasa StdRegProv obiektu WScript.Shell i usługi WMI) można można używać wewnątrz środowiska 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.

Tworzenie kluczyCreating Keys

Tworzenie nowych kluczy w rejestrze jest łatwiejsze niż w przypadku tworzenia nowego elementu w systemie plików.Creating new keys in the registry is simpler than creating a new item in a file system. Ponieważ wszystkie klucze rejestru są kontenerami, nie trzeba określić typ elementu; Możesz po prostu podać jawne ścieżkę, takich jak: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

Umożliwia także ścieżkę opartej na dostawcy, aby określić klucz:You can also use a provider-based path to specify a key:

New-Item -Path Registry::HKCU_DeleteMe

Usuwanie kluczyDeleting Keys

Usuwanie elementów zasadniczo jest taka sama dla wszystkich dostawców.Deleting items is essentially the same for all providers. Następujące polecenia dyskretnie spowoduje usunięcie elementów:The following commands will silently remove items:

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

Usunięcie wszystkich kluczy w określonym kluczuRemoving All Keys Under a Specific Key

Można usunąć zawartych w niej elementów, używając Usuń element, ale pojawi się monit o potwierdzenie usunięcia, jeśli element zawiera coś innego.You can remove contained items by using Remove-Item, but you will be prompted to confirm the removal if the item contains anything else. Na przykład firma Microsoft podejmie próbę usunięcia HKCU:\podklucza CurrentVersion utworzyliśmy, widzimy to: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"):

Aby usunąć zawartych w niej elementów bez monitowania, określ -Recurse parametru:To delete contained items without prompting, specify the -Recurse parameter:

Remove-Item -Path HKCU:\CurrentVersion -Recurse

Jeśli chcesz usunąć wszystkie elementy w HKCU:\CurrentVersion, ale nie HKCU:\CurrentVersion samego, możesz zamiast tego użyć: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