Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przykład dotyczy tylko platform systemu Windows.
Ponieważ klucze rejestru są elementami na dyskach programu PowerShell, praca z nimi jest bardzo podobna do pracy z plikami i folderami. Jedną z krytycznych różnic jest to, że każdy element na dysku programu PowerShell opartym na rejestrze jest kontenerem, podobnie jak folder na dysku systemu plików. Jednak wpisy rejestru i skojarzone z nimi wartości są właściwościami elementów, a nie odrębnymi elementami.
Wyświetlanie listy wszystkich podklucze klucza rejestru
Wszystkie elementy można wyświetlić bezpośrednio w kluczu rejestru przy użyciu polecenia Get-ChildItem. Dodaj opcjonalny parametr Force , aby wyświetlić ukryte lub systemowe elementy. Na przykład to polecenie wyświetla elementy bezpośrednio na dysku HKCU:programu PowerShell, który odpowiada HKEY_CURRENT_USER gałęzi rejestru:
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
Są to klucze najwyższego poziomu widoczne HKEY_CURRENT_USER w edytorze rejestru (regedit.exe).
Tę ścieżkę rejestru można również określić, określając nazwę dostawcy rejestru, a następnie .:: Pełna nazwa dostawcy rejestru to Microsoft.PowerShell.Core\Registry, ale można to skrócić do tylko Registry. Dowolne z poniższych poleceń spowoduje wyświetlenie zawartości bezpośrednio w obszarze 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 zawierają tylko bezpośrednio zawarte elementy, podobnie jak DIR w powłoce system UNIX lub ls w cmd.exe powłoce system UNIX. Aby pokazać zawarte elementy, należy określić parametr Recurse . Aby wyświetlić listę wszystkich kluczy rejestru w programie HKCU:, użyj następującego polecenia.
Get-ChildItem -Path HKCU:\ -Recurse
Get-ChildItem może wykonywać złożone funkcje filtrowania za pomocą parametrów Path, Filter, Include i Exclude , ale te parametry są zwykle oparte tylko na nazwie. Za pomocą Where-Object polecenia cmdlet można wykonywać złożone filtrowanie na podstawie innych właściwości elementów.
Następujące polecenie znajduje wszystkie klucze w obrębie HKCU:\Software , które nie mają więcej niż jednego podklucza, a także mają dokładnie cztery wartości:
Get-ChildItem -Path HKCU:\Software -Recurse |
Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }
Kopiowanie kluczy
Kopiowanie odbywa się za pomocą polecenia Copy-Item. Poniższy przykład kopiuje CurrentVersion podklucz HKLM:\SOFTWARE\Microsoft\Windows\ i wszystkie jego właściwości do HKCU:\.
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:
Jeśli zbadasz ten nowy klucz w edytorze rejestru lub użyjesz Get-ChildItempolecenia , zauważysz, że nie masz kopii zawartych podklucza w nowej lokalizacji. Aby skopiować całą zawartość kontenera, należy określić parametr Recurse . Aby wykonać rekursywne poprzednie polecenie kopiowania, użyj następującego polecenia:
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU: -Recurse
Nadal możesz używać innych narzędzi, które są już dostępne do wykonywania kopii systemu plików. Wszystkie narzędzia do edycji rejestru — w tym reg.exeobiekty , regini.exe, regedit.exei COM, które obsługują edytowanie rejestru, takie jak WScript.Shell i klasa WMI StdRegProv , mogą być używane z poziomu programu PowerShell.
Tworzenie kluczy
Tworzenie nowych kluczy w rejestrze jest prostsze niż tworzenie nowego elementu w systemie plików. Ponieważ wszystkie klucze rejestru są kontenerami, nie musisz określać typu elementu. Wystarczy podać jawną ścieżkę, taką jak:
New-Item -Path HKCU:\Software_DeleteMe
Możesz również użyć ścieżki opartej na dostawcy, aby określić klucz:
New-Item -Path Registry::HKCU\Software_DeleteMe
Usuwanie kluczy
Usuwanie elementów jest zasadniczo takie samo dla wszystkich dostawców. Następujące polecenia w trybie dyskretnym usuwają elementy:
Remove-Item -Path HKCU:\Software_DeleteMe
Remove-Item -Path 'HKCU:\key with spaces in the name'
Usuwanie wszystkich kluczy w określonym kluczu
Możesz usunąć zawarte elementy przy użyciu polecenia Remove-Item, ale zostanie wyświetlony monit o potwierdzenie usunięcia, jeśli element zawiera inne elementy. Jeśli na przykład spróbujemy usunąć utworzony podklucz HKCU:\CurrentVersion , zobaczymy następujące elementy:
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ąć zawarte elementy bez monitowania, określ parametr Recurse :
Remove-Item -Path HKCU:\CurrentVersion -Recurse
Jeśli chcesz usunąć wszystkie elementy, ale nie HKCU:\CurrentVersion samemuHKCU:\CurrentVersion, możesz zamiast tego użyć:
Remove-Item -Path HKCU:\CurrentVersion\* -Recurse