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.

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

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

Na początek utworzymy sobie nowy klucz o nazwie SOISK. Klucz tworzymy poleceniem:
$RegistryPath = 'HKCU:\SOISK'
New-Item -Path $RegistryPath

Klucz o nazwie SOISK został utworzony.

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

Wywołanie powyższego polecenia zmieni nazwę klucza rejestru 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.

Tutaj posłużymy się poleceniem:
$OldDestination = 'HKCU:\SOISK PL'
$NewDestination = 'HKLM:\DRIVERS'
Move-Item -Path $OldDestination -Destination $NewDestination

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

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

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

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

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

Do wykonania tej operacji posłużymy się poleceniem Remove-Item:
$RegistryKey = 'HKLM:\DRIVERS\SOISK PL'
Remove-Item $RegistryKey

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

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

Rozpoczniemy od utworzenia 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

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

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

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

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

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

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

W kolejnym kroku utworzymy sobie nową wartość 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

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

W przypadku tworzenia 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

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

Do przetestowania pozostało tworzenie ostatnich dwóch wartości. Pierwszą z nich, czyli wartość 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

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

Druga w kolejce, to wartość 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

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

Ok. Przebrnęliśmy przez sporą część kursu. Teraz naszym zadaniem będzie zmiana 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

Wartość DWORD o nazwie Testowy została zmieniona 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

Nowa wartość została zaktualizowana.

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.

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

Wartość QWORD została skopiowana.

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.

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

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

Efekt ten otrzymujemy poprzez użycie polecenia:
$RegistryPath = 'HKCU:\SOISK PL'
$ValueName = 'Test'
Clear-ItemProperty -Path $OldDestination -Name $ValueName

Zawartość została wyczyszczona.

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

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

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

To by było na tyle. Pozdrawiam.

Od roku 2005 zawodowo związany z branżą informatyczną. Wieloletnie doświadczenie zaowocowało uzyskaniem prestiżowego, międzynarodowego tytułu MVP (Most Valuable Professional) nadanego przez firmę Microsoft. W wolnych chwilach prowadzi blog oraz nagrywa, montuje i publikuje kursy instruktażowe na kanale YouTube.