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.