Chyba nie trzeba nikogo przekonywać do używania w administrowaniu systemem narzędzia o nieograniczonych możliwościach znanego pod nazwą PowerShell. W dzisiejszym artykule chciałbym przedstawić kilka przykładów zarządzania rejestrem poprzez zastosowanie wybranych poleceń PowerShell.

Zarządzanie rejestrem systemu Windows 10 rozpoczynamy od wywołania okna edytora rejestru poleceniem regedit. Okno edytora rejestru posłuży nam do podglądu efektów działania komend PowerShell.

Wywołanie okna edytora rejestru w systemie Windows 10.

Wywołanie okna edytora rejestru w systemie Windows 10.

Do testów wybierzemy sobie na przykład klucz HKEY_CURRENT_USER

Widok okna edytora rejestru w systemie Windows 10.

Widok okna edytora rejestru w systemie Windows 10.

Dodatkowo do wykonywania poleceń PowerShell posłużymy się aplikacją o nazwie Windows PowerShell ISE, koniecznie z uprawnieniami Administratora systemu.

Wywołanie aplikacji Windows PowerShell ISE w systemie Windows 10.

Wywołanie aplikacji Windows PowerShell ISE w systemie Windows 10.

Na początek utworzymy sobie nowy klucz o nazwie SOISK. Klucz tworzymy poleceniem:

$RegistryPath = 'HKCU:\SOISK'
New-Item -Path $RegistryPath

Tworzenie klucza o nazwie SOISK.

Tworzenie klucza o nazwie SOISK.

Klucz o nazwie SOISK został utworzony.

Utworzenie klucza o nazwie SOISK.

Utworzenie klucza o nazwie SOISK.

Jeśli podczas tworzenia nowego klucza wkradł się mały błąd lub po prostu chcielibyśmy zmienić jego nazwę, używamy polecenia:

$OldRegistryKey = 'HKCU:\SOISK'
$NewRegistryKey = 'SOISK PL'
Rename-Item -Path $OldRegistryKey -NewName $NewRegistryKey

Zmiana nazwy klucza rejestru z SOISK na SOISK PL.

Zmiana nazwy klucza rejestru z SOISK na SOISK PL.

Wywołanie powyższego polecenia zmieni nazwę klucza rejestru SOISK na SOISK PL

Zmiana nazwy klucza rejestru z SOISK na SOISK PL.

Zmiana nazwy klucza rejestru z SOISK na SOISK PL.

Nazwa klucz SOISK została zmieniona. Teraz w ramach ćwiczeń możemy przenieść klucz o nazwie SOISK PL w inne miejsce. Na potrzeby tego kursu przeniesiemy go z klucza HKEY_CURRENT_USER do HKEY_LOCAL_MACHINE, do klucza DRIVERS.

Przeniesienie klucza SOISK PL z HKEY_CURRENT_USER do HKEY_LOCAL_MACHINE.

Przeniesienie klucza SOISK PL z HKEY_CURRENT_USER do HKEY_LOCAL_MACHINE.

Tutaj posłużymy się poleceniem:

$OldDestination = 'HKCU:\SOISK PL'
$NewDestination = 'HKLM:\DRIVERS'
Move-Item -Path $OldDestination -Destination $NewDestination

Przeniesienie klucza SOISK PL z HKEY_CURRENT_USER do HKEY_LOCAL_MACHINE.

Przeniesienie klucza SOISK PL z HKEY_CURRENT_USER do HKEY_LOCAL_MACHINE.

Jeśli polecenie zostało wykonane poprawnie, klucz o nazwie SOISK PL powinien zostać przeniesiony do nowej lokalizacji.

Przeniesienie klucza SOISK PL z HKEY_CURRENT_USER do HKEY_LOCAL_MACHINE.

Przeniesienie klucza SOISK PL z HKEY_CURRENT_USER do HKEY_LOCAL_MACHINE.

Klucz o nazwie SOISK PL znajduje się już w nowej lokalizacji, co widać na załączonym wyżej zrzucie. By w kluczu HKEY_CURRENT_USER nie było pustki, skopiujemy sobie do niego klucz SOISK PL

Skopiowanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS do HKEY_CURRENT_USER.

Skopiowanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS do HKEY_CURRENT_USER.

Do skopiowanie klucza i umieszczenie go w nowej lokalizacji posłużymy się komendą Copy-Item:

$OldDestination = 'HKLM:\DRIVERS\SOISK PL'
$NewDestination = 'HKCU:\'
Copy-Item -Path $OldDestination -Destination $NewDestination

Skopiowanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS do HKEY_CURRENT_USER.

Skopiowanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS do HKEY_CURRENT_USER.

Nie mogło być inaczej, klucz SOISK PL został skopiowany.

Skopiowanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS do HKEY_CURRENT_USER.

Skopiowanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS do HKEY_CURRENT_USER.

Po skopiowaniu klucza SOISK PL do HKEY_CURRENT_USER możemy usunąć jego duplikat znajdujący się w  HKEY_LOCAL_MACHINE\DRIVERS

Usuwanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS.

Usuwanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS.

Do wykonania tej operacji posłużymy się poleceniem Remove-Item:

$RegistryKey = 'HKLM:\DRIVERS\SOISK PL'
Remove-Item $RegistryKey

Usuwanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS.

Usuwanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS.

Możemy odetchnąć, bo klucz SOISK PL został poprawnie usunięty.

Usuwanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS.

Usuwanie klucza SOISK PL z HKEY_LOCAL_MACHINE\DRIVERS.

Teraz przejdziemy do tworzenia nowych wartości w kluczu SOISK PL.

Tworzenie nowych wartości w kluczu SOISK PL.

Tworzenie nowych wartości w kluczu SOISK PL.

Rozpoczniemy od utworzenia nowej wartości ciągu.

Tworzenie w edytorze rejestru nowej wartości ciągu.

Tworzenie w edytorze rejestru nowej wartości ciągu.

W kluczu SOISK PL nową wartość ciągu o nazwie Test i wartości 1 tworzymy poleceniem:

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Test'
$ValueType = 'String'
$ValueData = '1'

New-ItemProperty -Path $RegistryPath -Name $ValueName -PropertyType $ValueType -Value $ValueData

Tworzenie w edytorze rejestru nowej wartości ciągu.

Tworzenie w rejestrze nowej wartości ciągu.

Nowa wartość ciągu o nazwie Test z wartością 1 została utworzona.

Tworzenie w edytorze rejestru nowej wartości ciągu.

Tworzenie w rejestrze systemu Windows 10 przy użyciu polecenia PowerShell nowej wartości ciągu.

Gdybyśmy zapragnęli utworzyć daną wartość zawierającą tekst, możemy posłużyć się poleceniem:

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Wartość ciągu z tekstem'
$ValueType = 'String'
$ValueData = 'Przykładowy tekst'
New-ItemProperty -Path $RegistryPath -Name $ValueName -PropertyType $ValueType -Value $ValueData

Tworzenie w edytorze rejestru nowej wartości ciągu.

Tworzenie w rejestrze systemu Windows 10 przy użyciu polecenia PowerShell nowej wartości ciągu.

Nowa wartość ciągu o nazwie Wartość ciągu z tekstem została utworzona.

Tworzenie w rejestrze systemu Windows 10 przy użyciu polecenia PowerShell nowej wartości ciągu.

Tworzenie w rejestrze systemu Windows 10 przy użyciu polecenia PowerShell nowej wartości ciągu.

Teraz pokażę, jak przy pomocy poleceń PowerShell utworzyć nową wartość binarną.

Tworzenie w rejestrze systemu Windows 10 przy użyciu polecenia PowerShell nowej wartości binarnej.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości binarnej.

Konwertujemy sobie tekst np. soisk.pl na system liczbowy szesnastkowy (system liczbowy znany również  jest pod nazwą system heksadecymalny). W moim przypadku będzie to 73 6F 69 73 6B 2E 70 6C

Następnie poleceniem:

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Wartość Binarna'
$ValueType = 'Binary'
$ValueData = '73,6F,69,73,6B,2E,70,6C'
$HexSplit = $ValueData.Split(',') | % { "0x$_"}
New-ItemProperty -Path $RegistryPath -Name $ValueName -PropertyType $ValueType -Value ([byte[]]($HexSplit))

tworzymy nową wartość binarną o nazwie Wartość Binarna

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości binarnej.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości binarnej.

Możecie wierzyć lub nie, nowa wartość binarna zostaje utworzona.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości binarnej.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości binarnej.

W kolejnym kroku utworzymy sobie nową wartość DWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości DWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości DWORD.

Nowej wartości DWORD nadamy nazwę Testowy i ustawimy jej wartość na 1.

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Testowy'
$ValueType = 'DWORD'
$ValueData = '1'
New-ItemProperty -Path $RegistryPath -Name $ValueName -PropertyType $ValueType -Value $ValueData

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości DWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości DWORD.

Utworzenie nowej wartości DWORD o nazwie Testowy możecie podejrzeć w edytorze rejestru.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości DWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości DWORD.

W przypadku tworzenia nowej wartości QWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości QWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości QWORD.

polecenie wygląda podobnie:

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Testowy_QWORD'
$ValueType = 'QWORD'
$ValueData = '1'
New-ItemProperty -Path $RegistryPath -Name $ValueName -PropertyType $ValueType -Value $ValueData

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości QWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości QWORD.

Wynik powyższego działania ponownie możemy podejrzeć.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości QWORD.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości QWORD.

Do przetestowania pozostało tworzenie ostatnich dwóch wartości. Pierwszą z nich, czyli wartość ciągu wielokrotnego

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu wielokrotnego.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu wielokrotnego.

tworzymy poprzez wydanie polecenia:

$RegistryPath = ‚HKCU:\SOISK PL’
$ValueName = ‚Testowa_WCW’
$ValueType = ‚MultiString’
$ValueData = ‚1’
New-ItemProperty -Path $RegistryPath -Name $ValueName -PropertyType $ValueType -Value $ValueData

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu wielokrotnego.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu wielokrotnego.

Po wydaniu powyższego polecenia, nowa wartość ciągu wielokrotnego zostaje utworzona.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu wielokrotnego.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu wielokrotnego.

 Druga w kolejce, to wartość ciągu rozwijalnego.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu rozwijalnego.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu rozwijalnego.

Nową wartość ciągu rozwijalnego tworzymy poleceniem:

$RegistryPath = ‚HKCU:\SOISK PL’
$ValueName = ‚Testowa_WCW’
$ValueType = ‚ExpandString’
$ValueData = ‚1’
New-ItemProperty -Path $RegistryPath -Name $ValueName -PropertyType $ValueType -Value $ValueData

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu rozwijalnego.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu rozwijalnego.

Także i tym razem nowa wartość w rejestrze zostaje pomyślnie utworzona.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu rozwijalnego.

Tworzenie w rejestrze przy użyciu polecenia PowerShell nowej wartości ciągu rozwijalnego.

Ok. Przebrnęliśmy przez sporą część kursu. Teraz naszym zadaniem będzie zmiana wartości DWORD o nazwie Testowy na Testowy_DWORD.

Zmiana poleceniem PowerShell wartości DWORD o nazwie Testowy na Testowy_DWORD

Zmiana poleceniem PowerShell wartości DWORD o nazwie Testowy na Testowy_DWORD.

W tym przypadku posługujemy się poleceniem Rename-ItemProperty, którego zastosowanie wygląda następująco:

$RegistryPath = 'HKCU:\SOISK PL'
$OldName = 'Testowy'
$NewName = 'Testowy_DWORD'
Rename-ItemProperty -Path $RegistryPath -Name $OldName -NewName $NewName

Zmiana poleceniem PowerShell wartości DWORD o nazwie Testowy na Testowy_DWORD.

Zmiana poleceniem PowerShell wartości DWORD o nazwie Testowy na Testowy_DWORD.

Wartość DWORD o nazwie Testowy została zmieniona na Testowy_DWORD.

Zmiana poleceniem PowerShell wartości DWORD o nazwie Testowy na Testowy_DWORD.

Zmiana poleceniem PowerShell wartości DWORD o nazwie Testowy na Testowy_DWORD.

Nazwa wartości DWORD zmieniona. Ale co zrobić w przypadku, gdybyśmy chcieli zmienić jej wartość z np. 1 na 0 ?

Nic prostszego. Posługujemy się poleceniem Set-ItemProperty.

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Testowy_DWORD'
$ValueData = '0'
Set-ItemProperty -Path $RegistryPath -Name $ValueName -Value $ValueData

Zmiana poleceniem PowerShell danych wartości DWORD o nazwie Testowy_DWORD z 1 na 0.

Zmiana poleceniem PowerShell danych wartości DWORD o nazwie Testowy_DWORD z 1 na 0.

Nowa wartość została zaktualizowana.

Zmiana poleceniem PowerShell danych wartości DWORD o nazwie Testowy_DWORD z 1 na 0.

Zmiana poleceniem PowerShell danych wartości DWORD o nazwie Testowy_DWORD z 1 na 0.

Teraz nadszedł odpowiedni moment na przeniesienie oraz skopiowanie wybranych wartości. Umówmy się, że przenosić i kopiować będziemy do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Kopiowanie oraz przenoszenie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS

Kopiowanie oraz przenoszenie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Na pierwszy ogień kopiowanie wartości o nazwie Testowy_QWORD. Za wykonanie tej czynności odpowiada polecenie:

$OldDestination = 'HKCU:\SOISK PL'
$NewDestination = 'HKLM:\DRIVERS'
$ValueName = 'Testowy_QWORD'
Copy-ItemProperty -Path $OldDestination -Destination $NewDestination -Name $ValueName

Kopiowanie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Kopiowanie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Wartość QWORD została skopiowana.

Kopiowanie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Kopiowanie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Następnie poleceniem:

$OldDestination = 'HKCU:\SOISK PL'
$NewDestination = 'HKLM:\DRIVERS'
$ValueName = 'Testowy_DWORD'
Move-ItemProperty -Path $OldDestination -Destination $NewDestination -Name $ValueName

przenosimy wybrany (w tym przypadku klucz Testowy_DWORD) do nowej lokalizacji.

Przenoszenie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Przenoszenie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Przeniesienie wpisu możemy potwierdzić np. wywołując odpowiedni klucz edytora rejestru.

Przenoszenie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

Przenoszenie wpisów do klucza HKEY_LOCAL_MACHINE\DRIVERS.

PowerShell umożliwia także wyczyszczenie wartości w danym wpisie. Jako przykład  użyjemy wpisu o nazwie Test z wartością 1.

Wyczyszczenie zawartości wybranej wartości.

Wyczyszczenie zawartości wybranej wartości.

Efekt ten otrzymujemy poprzez użycie polecenia:

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Test'
Clear-ItemProperty -Path $OldDestination -Name $ValueName

Wyczyszczenie zawartości wybranej wartości.

Wyczyszczenie zawartości wybranej wartości.

Zawartość została wyczyszczona.

Wyczyszczenie zawartości wybranej wartości.

Wyczyszczenie zawartości wybranej wartości.

Zabawę z rejestrem zakończymy zastosowaniem polecenia Remove-ItemProperty, które odpowiedzialne jest za usuwanie/kasowanie istniejących wpisów.

Usuwanie wartości.

Usuwanie wartości.

W tym przykładzie do usunięcia istniejącej wartości o nazwie Testowy_QWORD zastosujemy komendę:

$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Testowy_QWORD'
Remove-ItemProperty -Path $RegistryPath -Name $ValueName

Usunięcie z rejestru wartości o nazwie Testowy_QWORD.

Usunięcie z rejestru wartości o nazwie Testowy_QWORD.

Wartości QWORD o nazwie Testowy_QWORD została z powodzeniem usunięta.

Usunięcie z rejestru wartości o nazwie Testowy_QWORD.

Usunięcie z rejestru wartości o nazwie Testowy_QWORD.

To by było na tyle. Pozdrawiam.

Tematy pokrewne: