Uvod v PowerShell kodo
PowerShell je sodoben lupinski ukazni vmesnik in skriptni jezik, razvit v podjetju Microsoft za avtomatizacijo sistemskih opravil. Zgrajen je na platformi .NET in omogoča pisanje skript, ki lahko nadzorujejo in upravljajo Windows okolje, pa tudi druge operacijske sisteme, kot sta Linux in macOS. Skripte PowerShell se shranjujejo z datotečno pripono .ps1, njihova moč pa izhaja iz uporabe ukazov, imenovanih cmdleti, ki so oblikovani v skladu s sintakso glagol-samostalnik. Vsak cmdlet opravlja določeno funkcijo, na primer Get-Process prikaže seznam tekočih procesov, Medtem ko Get-Service prikaže stanje storitev. S kombiniranjem cmdletov v cevovod (pipeline) lahko podatke filtriramo, spreminjamo in izvozimo brez potrebe po zapletenih zankah.
Osnove pisanja skript PowerShell
Preden začnete pisati PowerShell kodo, morate razumeti nekaj ključnih konceptov. Prvi je izvajalna politika (execution policy), ki nadzoruje, katere skripte je dovoljeno zagnati. Z ukazom Set-ExecutionPolicy lahko nastavite politiko na RemoteSigned, kar dovoljuje izvajanje lokalnih skript in podpisanih skript iz oddaljenih virov. Drugi pomemben koncept so spremenljivke, ki se začnejo z znakom $. Na primer $Ime = "Svet" ustvari spremenljivko, ki vsebuje niz. PowerShell podpira tudi pogojne stavke, kot sta if in switch, ter zanke, kot so for, foreach, while in do-while. Cevovod (|) omogoča, da izhod enega cmdleta usmerimo kot vhod v drugega, kar omogoča veriženje operacij. Na primer Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 prikaže pet procesov z največjo porabo procesorja.

Seznam pogostih cmdletov PowerShell
Spodaj je seznam cmdletov, ki jih boste pri pisanju PowerShell kode najpogosteje srečali:
- Get-Help: prikaže pomoč za katerikoli cmdlet ali koncept.
- Get-Process: seznam tekočih procesov.
- Get-Service: prikaže stanje storitev (Running, Stopped).
- Set-Location: spremeni trenutni imenik (podobno kot cd).
- Get-ChildItem: našteta datoteke in mape v imeniku.
- Select-Object: izbere določene lastnosti objekta.
- Where-Object
- Sort-Object: razvrsti objekte po eni ali več lastnostih.
- Get-EventLog: dostopa do dnevnikov dogodkov sistema Windows.
- Get-ADUser: poizveduje po uporabnikih v Active Directory.
Uporaba Active Directory cmdletov v PowerShell
PowerShell je izjemno uporaben pri upravljanju storitve Active Directory. Cmdleti, kot sta Get-ADUser in Get-ADComputer, zahtevajo, da je nameščen modul Active Directory, kar je običajno na krmilnikih domene ali na računalnikih z nameščenimi orodji za oddaljeno administracijo. Spodnja tabela prikazuje pogoste cmdlete in njihov namen:

| Cmdlet | Opis |
|---|---|
| Get-ADUser | Pridobi informacije o uporabniških računih. |
| Get-ADComputer | Pridobi informacije o računalnikih v domeni. |
| Add-ADGroupMember | Doda uporabnika ali računalnik v skupino. |
| Set-ADUser | Spremeni lastnosti uporabniškega računa. |
| New-ADUser | Ustvari novega uporabnika v imeniku. |
Primer PowerShell kode za pridobivanje uporabnikov
Poglejmo si konkreten primer, ki prikazuje, kako uporabiti PowerShell kodo za pridobivanje uporabnikov, ustvarjenih v zadnjih sedmih dneh. Ta skript je uporaben za administracijo, saj hitro prikaže sveže dodane račune. Koda je naslednja:
$Fecha = (Get-Date).AddDays(-7)
Get-ADUser -Filter {whenCreated -ge $Fecha} -Properties Name,Enabled,whenCreated

V tej kodi najprej določimo spremenljivko $Fecha, ki vsebuje datum pred sedmimi dnevi. Nato uporabimo cmdlet Get-ADUser s filtrom, ki izbere vse uporabnike, katerih atribut whenCreated je večji ali enak datumu v spremenljivki. S parametrom -Properties določimo, katere lastnosti naj se prikažejo: ime, status omogočenosti in datum ustvarjanja. To je odličen primer, kako PowerShell koda omogoča hitro in učinkovito poizvedovanje po podatkih v Active Directory.
Napredne zmogljivosti PowerShell kode
PowerShell ni le preprost skriptni jezik. Podpira objektno usmerjene cevovode, kar pomeni, da vsak cmdlet deluje z objekti .NET, ne z besedilom. To omogoča lažje manipuliranje s podatki, saj lahko neposredno dostopate do lastnosti objektov. Poleg tega PowerShell omogoča oddaljeno seje (remote sessions), kar vam omogoča izvajanje ukazov na oddaljenih računalnikih z uporabo protokola WinRM. Za varnost so na voljo izvajalne politike, ki preprečujejo nenamerno izvajanje zlonamerne kode. PowerShell Core, odprtokodna različica, je na voljo pod licenco MIT na GitHubu in deluje na različnih platformah.

Kako uporabiti aliase v PowerShell kodi
Ali asi so kratka imena za cmdlete, ki pospešijo pisanje kode. Na primer, Get-ChildItem ima alias dir (iz MS-DOS) in ls (iz Linuxa). Podobno Set-Location uporablja alias cd, Get-Process pa ps. Uporaba aliasov je uporabna pri interaktivnem delu, v skriptah pa je priporočljivo uporabljati polna imena, saj so bolj berljiva in prenosljiva med različnimi okolji. S pomočjo Get-Alias lahko prikažete celoten seznam razpoložljivih aliasov v svoji PowerShell seji.
Pisana koda za upravljanje storitev
Drug pogost primer uporabe PowerShell kode je upravljanje storitev Windows. Z Get-Service lahko preverite stanje storitev, nato pa z cmdleti, kot so Start-Service, Stop-Service ali Restart-Service, upravljate z njimi. Spodnja koda prikaže vse storitve, ki so trenutno ustavljene:

Get-Service | Where-Object { $_.Status -eq 'Stopped' }
V tej kodi uporabimo cevovod, da pošljemo vse storitve v cmdlet Where-Object, ki filtrira samo tiste, katerih lastnost Status je enaka 'Stopped'. To je preprost, a močan primer, kako PowerShell avtomatizira naloge, ki bi sicer zahtevale ročno preverjanje preko grafičnega vmesnika.
Zgodovina in razvoj PowerShell
PowerShell se je prvotno imenoval Monad in je bil predstavljen leta 2003. Leta 2006 je bil uradno izdan kot PowerShell 1.0. Sčasoma je doživel več pomembnih posodobitev, vključno z izdajo PowerShell Core leta 2016, ki temelji na .NET Core in je povsem odprtokoden. Danes PowerShell uporabljajo skrbniki sistemov, razvijalci in IT-strokovnjaki po vsem svetu za avtomatizacijo rutinskih opravil, upravljanje konfiguracij in integracijo z različnimi storitvami, vključno z Microsoft Azure in Office 365.
Praktični nasveti za pisanje PowerShell kode
Pri pisanju kode upoštevajte naslednje smernice: vedno uporabljajte eksplicitna imena cmdletov, pišite komentarje s pomočjo znaka #, uporabljajte dosledne poimenovalne konvencije za spremenljivke in funkcije ter testirajte kodo v varnem okolju, preden jo uporabite v produkciji. Prav tako je koristno uporabiti orodja, kot je PowerShell ISE ali Visual Studio Code z vtičnikom za PowerShell, ki nudijo poudarjanje sintakse in razhroščevanje.
Vir
Nekateri viri informacij, uporabljenih v članku, vključujejo uradno dokumentacijo podjetja Microsoft na portalu Microsoft Learn, ki vsebuje celovit pregled PowerShell in specifikacijo skriptnega jezika. Dodatne informacije o pogostih cmdletih so pridobljene iz vira IONOS, ki opisuje 40 najpogostejših cmdletov. Zgodovinski podatki so povzeti po repozitoriju GitHub za PowerShell, kjer je dokumentiran celoten razvoj orodja.





