Zbog važnosti koju baza Registry ima u normalnom funkcioniranju Windowsa, sasvim je razumljivo da se može koristiti iz različitih PowerShell naredbi. Za to ne služe posebne “PowerShell naredbe”, već poznate naredbe za rad s drugim objektima – na primjer mapama i datotekama. Jedina razlika tijekom njihovog korištenja je u tome da se prilikom zadavanja naredbi treba navesti drugačija usluga (Registry).
Pregled trenutačno dostupnih usluga na računalu (među kojima je i usluga Registry kojom ćemo se koristiti u nastavku teksta) može se dobiti naredbom:
Get-PSProvider
Slika 1. Pregled dostupnih usluga pomoću naredbe Get-PSProvider
Na prethodnoj slici usluga Registry u koloni “Drives” ima navedene dvije vrijednosti {HKLM, HKCU}. One predstavljaju svojevrsnu analogiju uređajima u datotečnom sustavu ({C, D, G}), kako bi se PowerShell naredbe mogle zadavati na sličan način.
Treba primijetiti da se kod pregleda osnovnih „grana“ u hijerarhijskoj strukturi baze Registry pomoću podrazumijevanog alata Registry Editor dobije veći broj grana nego što je to slučaj kod PowerShell naredbe (sljedeća slika).
Slika 2. Pregled dostupnih grana u bazi Registry pomoću alata Registry Editor
Ako pomoću naredbi PowerShell želimo pokazati koje se to dvije grane podrazumijevano vide iz baze Registry (iako bi to trebalo biti jasno na temelju njihovih skraćenica), to možemo napraviti pomoću naredbe:
Get-PSDrive -PSProvider Registry
- - - - -
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
U slučaju da podrazumijevane grane (kojima se u praksi najviše koristi u radu s Registryjem) nisu dovoljne, zbog jednostavnijeg korištenja drugih naredbi možemo definirati i novu granu. Na primjer, ako novu granu definiramo pomoću naredbe:
New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
prethodna naredba za dobivanje popisa grana sad vraća tri vrijednosti:
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
HKU Registry HKEY_USERS
Kad grana više nije potrebna, možemo je ukloniti pomoću naredbe:
Remove-PSDrive HKU
Nakon opisa organizacije i načina pristupa granama za rad s pojedinim ključevima i vrijednostima u bazi Ragistry, za ostale operacije može se koristiti praktično identičnim naredbama kao i kod korištenja datotečnim sustavom. Izuzetak su pojedini parametri naredbi posebno optimiziranih za rad s datotekama i mapama (na primjer parametar Filter).
Na primjer, umjesto naredbe za pregled sadržaja datoteka na disku
Dir C:
moguće je koristiti
Dir HKLM:\ ili Dir HKLM:\ -ea 0
nakon čega se dobiju sljedeći rezultati:
Hive: HKEY_LOCAL_MACHINE
Name Property
---- --------
HARDWARE
SAM
SECURITY
SOFTWARE
SYSTEM
Dodatni parametar (-ea 0), baš kao i kod datotečnog sustava, sprečava nepotrebni prikaz pogrešaka u pristupu do dijelova baze Registry za koje ne postoje odgovarajuća prava pristupa.
Kao i kod datotečnog sustava, gdje je često potrebno razlikovati mape od datoteka zbog različitih operacija koje se mogu izvoditi nad takvim objektima, tako i kod korištenja baze Registry ponekad treba pristupati ključevima, a ponekad vrijednostima ključeva.
Evo primjera kako to izgleda kod pretraživanja baze Registry. Prvo je naveden primjer naredbe za rekurzivno pretraživanje ključeva u obje podrazumijevane grane:
Get-ChildItem HKCU:, HKLM: -Recurse -Include *PowerShell* -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Name
- - - - -
HKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
HKEY_CURRENT_USER\Console\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe
HKEY_CURRENT_USER\Software\Microsoft\PowerShell
...
Slika 3. Primjer pretraživanja ključeva u bazi Registry
a slična naredba za pretraživanje vrijednosti ključeva ima sljedeći oblik:
Get-ChildItem HKCU:, HKLM: -Recurse -ea 0 | Where-Object { $_.GetValueNames() | Where-Object { $_ -like '*PowerShell*' } }
- - - - -
Hive: HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Configuration\Usage
Name Property
---- --------
Values FirstUse : 2018-11-25T09:33:54.516Z
FirstVersion : 513058967
LastReport : 2020-04-01T14:09:09.140Z
AnyBetaUsed : 0
...
Za prikaz pojedinačne vrijednosti ključa može se koristiti naredbom Get-Item-Property, ali se pri tome u osnovnom obliku naredbe dobije malo veći skup rezultata:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name
RegisteredOwner
- - - - -
RegisteredOwner : Nenad
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
Za dobivanje točno određene vrijednosti iz skupa vraćenih vrijednosti treba se koristiti već poznatim dodatkom Select-Object, kao što to pokazuje sljedeći primjer:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name RegisteredOwner | Select-Object -ExpandProperty RegisteredOwner
- - - - -
Nenad
Slijedi nekoliko primjera dodavanja i uklanjanja ključeva i vrijednosti iz baze podataka:
New-Item HKCU:\Software\TestKey1
New-Item HKCU:\Software\TestKey2 -Value 'Početna vrijednost' -Type String
Slika 4. Dodavanje novog ključa bez vrijednosti i ključa s početnom vrijednosti u Registry
Prethodne dvije naredbe stvaraju nove ključeve prikazane u nastavku u Registry Editoru.
Slika 5. Primjer novih ključeva dodanih u Registry
Dodavanje vrijednosti za postojeći ključ moguće je na više načina, već prema tome kakve su vrijednosti potrebne u konkretnoj situaciji:
Set-ItemProperty HKCU:\Software\TestKey1 -Name Prezime -Value 'Crnko'
Set-ItemProperty HKCU:\Software\TestKey1 -Name DigitalCode -Value 1,2,4,8,16 -Type Binary
Slika 6. Primjer dodavanja vrijednosti u postojeći ključ
Na kraju evo i naredbi kojima se mogu brisati prethodni ključevi, a samim tim i njihove vrijednosti:
Del HKCU:\Software\Test1
Del HKCU:\Software\Test2
Naredbama za rad s ključevima i njihovim vrijednostima mogu se u skriptama automatizirati različite operacije za rad s bazom Registry.