PowerShell kod: vodič i primjeri za početnike

Što je PowerShell i zašto ga koristiti?

PowerShell je napredno okruženje za automatizaciju zadataka i administraciju sustava koje je razvio Microsoft. Temelji se na .NET platformi i omogućuje izvođenje naredbi putem komandne linije, ali i pisanje skripti koje mogu upravljati cijelim računalnim okruženjem. Za razliku od klasičnog Command Prompt-a, PowerShell radi s objektima, a ne s tekstom, što znači da možete jednostavno filtrirati, sortirati i obrađivati podatke. Zbog toga je postao nezaobilazan alat za IT profesionalce, sistemske administratore i developere koji žele učinkovito upravljati Windows okruženjem, Active Directoryjem, Exchange serverom ili Azure resursima.

Za početnike je ključno razumjeti da PowerShell nije samo alat za napredne korisnike. Uz malo truda, svatko tko radi s računalima može naučiti osnovne naredbe i skripte koje će mu uštedjeti vrijeme. Na primjer, umjesto ručnog pregledavanja servisa ili procesa, možete ih dohvatiti jednom naredbom i prikazati u preglednom obliku. Ovaj vodič donosi konkretne primjere i objašnjenja koja će vam pomoći da napravite prve korake u svijetu PowerShell koda.

Osnovni pojmovi: cmdleti, cjevovodi i varijable

Srž PowerShell čine cmdleti – male, specijalizirane naredbe koje obavljaju jednu funkciju. Svaki cmdlet slijedi obrazac glagol-imenica, poput Get-Process, Set-Location ili Stop-Service. Glagol označava radnju, a imenica objekt na kojem se radnja izvodi. Ova dosljednost olakšava pamćenje i pretraživanje naredbi. Ugrađeni cmdlet Get-Help omogućuje vam da saznate kako koristiti bilo koju naredbu, pa je to prva naredba koju bi svaki početnik trebao upoznati.

Cjevovodi (pipeline) su još jedna moćna značajka. Znakom | možete prenijeti izlaz jedne naredbe u ulaz druge. Na primjer, Get-Service | Where-Object {$_.Status -eq 'Running'} će prikazati samo servise koji su pokrenuti. Objekti koji prolaze kroz cjevovod zadržavaju svoju strukturu, što omogućuje precizno filtriranje i transformaciju. Varijable u PowerShellu označavaju se znakom $, a u njih možete spremiti brojeve, tekst, objekte ili čitave liste. Primjerice, $procesi = Get-Process sprema sve procese u varijablu koju kasnije možete obraditi.

Kako napisati i pokrenuti PowerShell skriptu?

Skripte se spremaju s nastavkom .ps1. Prije pokretanja skripte na vašem računalu potrebno je provjeriti postavke izvršavanja. Naredba Get-ExecutionPolicy prikazuje trenutnu politiku. Ako je postavljena na Restricted, skripte neće raditi. Preporuka je postaviti Set-ExecutionPolicy RemoteSigned za lokalne skripte, čime se dopušta izvršavanje vlastitih skripti dok se preuzete moraju potpisati. Politiku izvršavanja možete prilagoditi sigurnosnim zahtjevima vaše organizacije.

PowerShell kod: vodič i primjeri za početnike - 1

Jednostavna skripta može izgledati ovako:

$danas = Get-Date
Write-Output "Današnji datum: $danas"
$servisi = Get-Service
$servisi | Where-Object {$_.Status -eq 'Stopped'} | Format-Table -AutoSize

Nakon što spremite datoteku, pokrenite je u PowerShell terminalu unosom puta do nje, npr. C:\scripts\prva.ps1 ili jednostavno .\prva.ps1 ako ste u istom direktoriju. U slučaju grešaka, provjerite politiku izvršavanja i dozvole.

Najčešće PowerShell naredbe za početnike

U nastavku donosimo popis osnovnih cmdleta koje biste trebali upoznati. Ove naredbe pokrivaju najčešće administrativne zadatke.

  • Get-Help – prikazuje pomoć za bilo koju naredbu; primjer Get-Help Get-Process -Full
  • Get-Process – dohvaća popis aktivnih procesa
  • Get-Service – prikazuje sve servise i njihov status
  • Set-Location – mijenja trenutni direktorij (slično cd)
  • Get-ChildItem – ispisuje sadržaj mape
  • Where-Object – filtrira objekte prema uvjetu
  • Select-Object – odabire određena svojstva objekata
  • New-Item – stvara novu datoteku ili mapu
  • Remove-Item – briše datoteku ili mapu
  • Export-Csv – izvozi podatke u CSV datoteku

Ove naredbe možete kombinirati s cjevovodima kako biste dobili precizne rezultate. Na primjer, Get-Process | Where-Object {$_.WorkingSet -gt 100MB} | Select-Object Name, CPU prikazuje nazive i korištenje CPU-a za procese koji koriste više od 100 MB memorije.

Primjer skripte za dohvat korisnika iz Active Directoryja

Jedna od čestih zadaća u IT okruženjima je provjera novih korisnika u Active Directoryju. Za to se koristi modul ActiveDirectory. Sljedeća skripta dohvaća sve korisnike koji su kreirani u posljednjih 7 dana:

PowerShell kod: vodič i primjeri za početnike - 2
$DatumOd = (Get-Date).AddDays(-7)
Get-ADUser -Filter {whenCreated -ge $DatumOd} -Properties Name, Enabled, whenCreated

Ova skripta koristi cmdlet Get-ADUser i filtar prema atributu whenCreated. Rezultat će uključivati ime korisnika, status računa (omogućen ili onemogućen) te datum kreiranja. Ako trebate samo korisnike s omogućenim računom, dodajte uvjet where {$_.Enabled -eq $true}.

Važno je napomenuti da modul ActiveDirectory mora biti instaliran na računalu ili poslužitelju. Na Windows 10/11 možete ga dodati putem značajki sustava (RSAT alati). Nakon učitavanja modula s Import-Module ActiveDirectory, naredbe su spremne za korištenje.

Usporedba PowerShell i CMD naredbi

Kako biste lakše prešli s klasične naredbene linije, donosimo tablicu usporedbe čestih CMD naredbi s PowerShell ekvivalentima.

CMD naredbaPowerShell naredbaOpis
cdSet-LocationPromjena direktorija
dirGet-ChildItemPrikaz sadržaja mape
clsClear-HostČišćenje zaslona
delRemove-ItemBrisanje datoteke
copyCopy-ItemKopiranje datoteke
moveMove-ItemPremještanje datoteke
tasklistGet-ProcessPopis procesa
ipconfigGet-NetIPConfigurationPrikaz mrežnih postavki

Iako PowerShell nudi alias-e poput cd, dir ili ls (za korisnike Linuxa), preporučuje se s vremenom koristiti pune cmdlete jer su čitljiviji i lakši za učenje. Aliasi su korisni za brzi rad, ali u skriptama bolje je koristiti pune nazive zbog jasnoće.

Kontrola toka: petlje i uvjeti

Kao i svaki programski jezik, PowerShell podržava petlje i uvjetno grananje. Osnovne petlje su for, foreach i while. Primjer petlje koja prolazi kroz listu servisa i zaustavlja one koji su u statusu Stopped:

PowerShell kod: vodič i primjeri za početnike - 3
$servisi = Get-Service
foreach ($s in $servisi) {
    if ($s.Status -eq 'Stopped') {
        Write-Output "Servis $($s.Name) je zaustavljen."
    }
}

Uvjeti se pišu pomoću if, elseif i else. Za složenije uvjete koristi se naredba switch. Varijable se uspoređuju operatorima poput -eq, -ne, -gt, -lt. Budući da PowerShell razlikuje velika i mala slova, za case-sensitive usporedbu koristite -ceq i slično.

Funkcije vam omogućuju da ponovno iskoristite kod. Definiraju se riječju function. Na primjer:

function Get-StoppedServices {
    Get-Service | Where-Object {$_.Status -eq 'Stopped'}
}

Nakon definicije, dovoljno je pozvati Get-StoppedServices i dobit ćete filtrirani popis. Funkcije mogu imati parametre, što ih čini vrlo fleksibilnima.

Rad s udaljenim računalima i sesijama

PowerShell omogućuje upravljanje udaljenim računalima putem remotinga. Uvjet je da na ciljanom računalu bude omogućen WinRM (Windows Remote Management). Naredba Enter-PSSession otvara interaktivnu sesiju, dok Invoke-Command izvršava naredbe na udaljenom računalu bez otvaranja pune sesije. Primjer:

Invoke-Command -ComputerName Server01 -ScriptBlock { Get-Service }

Ovo je iznimno korisno za administratore koji upravljaju stotinama poslužitelja. Uz odgovarajuće konfiguriranje (TrustedHosts, autentifikacija), možete jednostavno provjeriti status servisa, instalirati softver ili prikupiti logove s udaljenih računala.

PowerShell kod: vodič i primjeri za početnike - 4

Praktični savjeti za sigurno pisanje skripti

Sigurnost je ključna pri radu s PowerShell skriptama. Uvijek provjerite podrijetlo skripte koju preuzimate s interneta. Koristite Set-ExecutionPolicy kako biste ograničili izvršavanje nepotpisanih skripti. Za testiranje, koristite zastavicu -WhatIf na naredbama koje mijenjaju sustav (poput Remove-Item). Tako ćete vidjeti što bi se dogodilo bez stvarnog izvršavanja.

Dokumentirajte svoje skripte. Dodajte komentare pomoću znaka #. Na primjer:

# Ova skripta dohvaća sve pokrenute servise
Get-Service | Where-Object {$_.Status -eq 'Running'}

Koristite Write-Verbose i Write-Debug za detaljnije informacije prilikom razvoja. Na kraju, redovito ažurirajte PowerShell modul jer Microsoft redovito isporučuje nove značajke i sigurnosne zakrpe.

Povijest i budućnost PowerShell-a

PowerShell je prvi put predstavljen 2003. pod kodnim imenom Monad, a službeno je objavljen 2006. godine. Od tada je postao sastavni dio Windows ekosustava. Godine 2016. Microsoft je objavio PowerShell Core, open-source verziju temeljenu na .NET Core, koja radi na Linuxu i macOS-u. Danas se PowerShell razvija na GitHubu pod MIT licencom, a zajednica aktivno doprinosi modulima i alatima.

Moderna inačica PowerShell 7 donosi unaprijeđene performanse, kompatibilnost sa starijim modulima te nove cmdlete za cloud okruženja. Učenje PowerShell koda danas nije samo vještina za Windows administraciju – postaje univerzalni alat za automatizaciju na više platformi.

PowerShell kod: vodič i primjeri za početnike - 5

Reference

U izradi ovog članka korišteni su sljedeći izvori:

Microsoft Learn – Pregled PowerShell-a: https://learn.microsoft.com/es-es/powershell/ (pristupljeno 2025.)

Microsoft Learn – Specifikacija skriptnog jezika: https://learn.microsoft.com/es-es/powershell/scripting/lang-spec/ (pristupljeno 2025.)

IONOS – Top 40 PowerShell naredbi: https://www.ionos.es/digitalguide/servidores/configuracion/comandos-de-powershell/ (pristupljeno 2025.)

Wikipedia – PowerShell: https://es.wikipedia.org

PowerShell skriptiranje Windows vodič primjeri početnici automatizacija
Napomena Sadržaj je informativan i može se razlikovati ovisno o verziji PowerShella i sustavu.
Autor

Stefano Barcellos

Suradnik na Visite Barbados.

« Prethodna objava
Web rješenja za vaš posao i online rast

Povezane objave