POWERSHELL - registry

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

 

Pregled dostupnih usluga pomoću naredbe 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).

Pregled dostupnih grana u bazi Registry pomoću alata Registry Editor

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
...

 

Primjer pretraživanja ključeva u bazi Registry

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

 

Dodavanje novog ključa bez vrijednosti i ključa s početnom vrijednosti u Registry

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.

 

Primjer novih ključeva dodanih u Registry

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

 

Primjer dodavanja vrijednosti u postojeći ključ

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.

Kategorija