Transcript
Page 1: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

 

 

 

 

 

 

PowerShell u SYS administraciji

 

Page 2: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  2

Sadržaj 

 

 

Zadatak 1: Upoznajmo Powershell Help  4

Zadatak 2: Izlistajmo Powershell cmdlete  8

Zadatak 3: Parametri i filtriranje podataka  9

Zadatak 4: Rad s metapodacima objekta  16

Zadatak 5: Korištenje ‐WhatIf i ‐Confirm parametara  19

Zadatak 6: Rad s varijablama  20

Zadatak 7: Rad sa stringovima  24

Zadatak 8: Kreiranje skripte  27

Zadatak 9: Rad s providerima  31

Zadatak 10: Active Directory  34

Zadatak 11: Windows Management Instrumentation  48

Zadatak 12: Remoting i izvođenje zadatka u pozadini  53

Page 3: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  3

Powershell WindowsPowershell je komandno linijski alat i skriptni jezik koji IT profesionalcima omogućava 

postizanje boljeg nadzora i povećanje produktivnosti. Korištenje ovog administratorski orijentiranog 

skriptnog jezika koji sadrži više od 230 komando linijskih naredbi, konzistentnu sintaksu i pomoćne alate 

olakšava sistem administraciju i automatizaciju. 

U ovoj radionici upoznati ćemo vas s osnovama korištenja Powershell naredbi (cmdleta) uključujući 

navedene tehnike. 

Powershell Help Windows Powershell uključuje bogatu dokumentaciju. Administratori mogu pretraživati 

dokumentaciju pomoću cmdleta. 

Pipeline Powershell se razlikuje od ostalih ljuski jer ne koristi stringove kao parametre već se upotrebljavaju 

.NET objekti. 

Naredbe za formatiranje Powershell ima velike mogućnosti formatiranja izlaznih podataka i njihovog preusmjeravanja u 

različite formate. 

Naredbe za filtriranje i sortiranje Formatiranje i filtriranje su korisne mogućnosti za manipulaciju izlaznim podacima iz cmdleta. 

PowerShell sadrži naredbe za uobičajenu uporabu, a korisnici mogu razvijati vlastite. 

Korištenje ‐WhatIf i ‐Confirm parametara Parametri cmdleta za sigurno testiranje i izvođenje. 

Rad s varijablama Powershell varijable su mapirane na .NET klase. Varijable su objekti, te mogu spremati podatke i 

njima manipulirati na razne načine. 

Rad s providerima Powershell ima mogućnost pristupa Windows Registryu, Windows datotečnom sustavu, Active 

Directoryiju te brojnim drugim setovima podataka. 

Active Directory Powershell ima mogućnost rada s brojnim Microsoftovim produktima kao što su na primjer AD, 

SCVMM i Exchange. Pokazati ćemo osnove rada s AD. 

Windows Management Instrumentation (WMI) 

WMI omogućava upravljanje radnim stanicama i poslužiteljima. 

Remoting Remoting omogućava izvođenje cmdleta na jednom ili više udaljenih računala. 

Page 4: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  4

Zadatak 1: Upoznajmo Powershell Help 

Pažnja: Svaka naredba ima više razina helpa 

‐ Default pogled pokazuje opis naredbe i sintaksu 

  ‐ Examples dodaje primjere korištenja 

  ‐ Detailed dodaje primjere korištenja i kompletnu dokumentaciju 

  ‐ Online navodi na Techent web stranicu koja sadrži dokumentaciju o naredbi 

 

Otvorite Command Prompt i upišite: 

powershell 

 

 

Upišite 

help * 

za dobivanje pregleda dostupnih tema. Pritisnite razmaknicu za prelazak na sljedeću stranicu. 

 

 

 

Page 5: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  5

 

Pažnja: Na ekranu možete vidjeti drugu kolonu "Category" s vrijednostima Alias, Cmdlet, Provider i HelpFile. Alias je skraćeni naziv naredbe ili naredba koja nam je poznata iz drugih komandno linijskih alata (na primjer dir). Cmdlet je .NET klasa koje je prikazana kao API, naredba ili GUI. Provideri su nadopune Powershella koje omogućavaju pristup Windows Registryiju, Windows datotečnom sustavu, Active Directoryiju i brojnim drugim setovima podataka. HelpFile sadrži korisne informacije o raznim mogućnostima Powershella, na primjer about_eventlogs sadrži podatke o radu s Event Logom. 

 

Unesite 

help Get‐Command 

da bi se upoznali s Get‐Command cmdletom. 

Page 6: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  6

 

 

Ukoliko upišemo 

help Get‐Command –Examples 

 

dobijemo primjere korištenja. 

 

Page 7: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  7

Za prikaz cjelokupnih help podataka upišite: 

help Get‐Command –Detailed

 

 

Za upoznavanje s aliasima upišite: 

help about_aliases 

 

Page 8: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  8

Zadatak 2: Izlistajmo Powershell cmdlete 

Unesite naredbu: 

Get‐Command 

Pregledajte listu naredbi, posebnu pažnju obratite na retke koji u stupcu CommandType imaju vrijednost cmdlet, proučite njihovu sintaksu. 

 

 

Pažnja: Powershell koristi glagol‐imenica konvenciju nazivanja cmdleta da bi lakše spoznali kako i što oni rade. 

Upišite Get‐C i pritisnite Tab tipku. Dobiti ćemo Get‐ChildItem cmdlet. Ponovo pritisnite Tab i dobivamo Get‐Command. Ukoliko nastavite pritiskati Tab tipku proći ćete kroz sve cmdlete koji počinju s Get‐C. Pritiskom na Shift+Tab možemo se kretati kroz cmdlete u suprotnom smijeru. Za izvođenje naredbe pritisnite Enter. 

Page 9: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  9

Zadatak 3: Parametri i filtriranje podataka 

U narednom zadatku upoznati ćemo se s upotrebom parametara i cmdleta za filtriranje podataka. Naučiti ćemo kako formatirati izlazne podatke. 

Upišite: 

Get‐Service 

za dobijanje popisa servisa na računalu. 

 

Pažnja: Windows PowerShell pruža kompletan set naredbi za upravljanje servisima, uključujući Get, New, Restart, Resume, Set, Start, Stop i Suspend. Za pregled cmdleta za upravljanje servisima upišite Get‐Command ‐Noun Service. 

Unesite: 

Get‐Service –Name Spooler 

za pregled statusa Spooler servisa. 

Page 10: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  10

 

Pažnja: Get‐Service podrazumijeva da je prvi parametar ime, pa ukoliko upišemo 

Get‐Service Spooler 

dobiti ćemo iste podatke kao i u prethodnom primjeru. 

 

Za pregled svih servisa čije ime počinje s "M" unesite: 

Get‐Service M* 

 

 

Pažnja: Dosta cmdleta dopušta upotrebu wildcardova za filtriranje rezultata. 

Page 11: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  11

Ukoliko unesemo 

Get‐Service M* | Format‐List 

dobijamo ispis u list formatu. 

 

 

Pažnja: U navedenom primjeru koristimo dva cmdleta povezana Pipe (|) simbolom. Izlazna vrijednost prvog cmdleta postaje ulazna vrijednost drugoga. 

 

Page 12: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  12

Za prikaz u custom formatu unesite: 

Get‐Service M* | Format‐Custom 

 

Pažnja: Powershell uključuje više predefiniranih formata ispisa od kojih svaki ima brojne mogućnosti konfiguracije. 

Za pregled sevisa čije ime počinje s "M" i imaju status "Running" unesite: 

Get‐Service M* | Where‐Object {$_.Status –eq "Running"} 

Page 13: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  13

 

 

Korištenje Where‐Object cmdleta za ispis servisa sa statusom "Running": 

Where‐Object koristimo za filtriranje izlaznih podataka 

{} su delimiteri za blokove Powershell koda 

$_ predstavlja ulazni objekt (u našem slučaju svi servisi koji počinju s M) 

‐eq specificira da će argument s lijeve strane, u našem slučaju Status property ($_.Status) uspoređujemo s vrijednošću na desnoj strani "Running". –eq je skraćeno od Equals, u biti koristimo operator jednako (Status = Running). 

Za pregled zaustavljenih servisa (status "Stopped") unesite: 

Get‐Service M* | Where {$_.Status –eq "Stopped"} 

 

Page 14: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  14

Pažnja: Uočite razliku između naredbe za prikaz pokrenutih i zaustavljenih servisa. Umjesto "cijelog" Where‐Object koristili smo Where alias. 

Ukoliko želimo servise sortirati po statusu koristimo: 

Get‐Service | Sort‐Object Status 

 

Pažnja: Sort‐Object sortira objekte koje vraća prethodna naredba. Također umjesto Sort‐Object možemo koristiti alias Sort. 

 

Page 15: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  15

Za dobijanje Name i DisplayName svojstva svih servisa koji počinju na "M" složenih po statusu upišite: 

Get‐Service M* | Sort‐Object Status | Format‐Table Name, DisplayName 

 

Page 16: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  16

Zadatak 4: Rad s metapodacima objekta 

U Powershellu objekt je sve, uključujući cmdlete, servise i procese. Powershell omogućava jednostavno ispitivanje svojstva objekta. 

Za pregled metapodataka za objekt koji nam vraća Get‐Service upišite: 

Get‐Service | Get‐Member 

 

Prikazani su metapodaci za objekt koji vraća Get‐Service cmdlet. Promjetite da je prikazan i tip objekta, u našem slučaju System.ServiceProcess.ServiceController 

Za prikaz metapodataka koje vraća Get‐Process upišite: 

Get‐Process | Get‐Member 

Page 17: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  17

 

Za kreiranje novog objekta tipa System.Diagnostics.Process i prikaz njegovih metapodataka upišite: 

New‐Object System.Diagnostics.Process | Get‐Member 

Page 18: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  18

 

 

Za pregled servisa o kojima ovisi Spooler servis unesite: 

Get‐Service Spooler | Select‐Object ServicesDependedOn 

 

Dobivamo popis servisa koji su potrebni za start Spooler servisa. 

Page 19: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  19

Zadatak 5: Korištenje ­WhatIf i ­Confirm parametara 

Powershell omogućava administratorima sigurno testiranje. 

[Cmdlet] ‐WhatIf prikazuje rezultate bez stvarnog izvođenja cmdleta. 

[Cmdlet] ‐Confirm traži potvrdu korisnika prije izvođenja akcije. 

Unesite: 

Stop‐Service M* ‐WhatIf 

za provjeru koji sevisi bi bili zaustavljeni ukoliko naredbu izvedemo bez –WhatIf parametra. 

 

 

Unesite: 

Stop‐Service M* ‐Confirm 

za unos potvrde da želite zaustaviti specificirane servise. 

 

Page 20: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  20

Zadatak 6: Rad s varijablama 

U ovome zadatku upoznati ćemo osnove rada s varijablama u Powershellu. 

Unesite: 

$var = "Dobar dan" 

Upravo smo kreirali varijablu var i dodijelili joj vrijednost Dobar dan. 

Pažnja: Varijable u Powershellu moraju "počinjati" sa simbolom $. 

Za ispis vrijednosti pohranjene u varijabli upišite 

$var 

Pažnja: Preporučeni način za ispis vrijednosti varijable je upotebom Write‐Host cmdleta prije samog naziva varijable jer jasno ukazuje da ispisujemo vrijednost. 

 

Pažnja: Nakon kreiranja (prije dodjele vrijednosti) varijabla ima null vrijednost. 

Za ispis trenutno deklariranih varijabli upišite: 

Get‐Variable 

Page 21: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  21

 

Varijabe u Powershellu su takozvane non‐typed varijable, što znači da mogu "držati" vrijednost bez obzira na tip vrijednosti (string, integer...) 

Ukoliko upišemo: 

$var = 123 (pritisnite enter) 

$var 

varijabla sadrži integer (cijelobrojnu) vrijednost. 

 

Varijable također mogu sadržavati liste vrijednosti (polja, eng. array). 

Page 22: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  22

$var = 1,2,3 

$var 

 

Za provjeru tipa varijable upišite: 

$var.GetType().FullName 

 

Kao što vidimo varijabla je sada array tipa System.Object[]. 

Informacije o polju možemo dobiti korištenjem .NET metoda. Na primjer, možemo vidjeti koliko elemenata ima naše polje. 

$var.Length 

 

Za pristup pojedinom elementu upišimo 

$var[1] 

Pažnja: Array u Powershellu je 0‐baziran, to znači da prvi element uvijek ima indeks 0. U našem primjeru 

smo ispisali drugi element arraya, vrijednost 2. 

Page 23: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  23

Polje možemo deklarirati navođenjem tipa varijable tijekom deklaracije. Upisivanjem: 

[int[]] $var = (1,2,3) 

deklariramo polje cijelih brojeva. 

Za dodjeljivanje nove vrijednosti trećem elementu polja upišimo: 

$var[2] = "0123" 

$var[2] 

 

Uočite da se string vrijednost "0123" promijenila u cjelobrojnu vrijednost 123. Powershell implicitno 

mijenja tip varijable tako da odgovara tipu s kojim je deklarirna varijabla. U našem slučaju je polje 

deklarirano kao cjelobrojno, te je string "0123" postao integer 123. 

Pažnja: Implicitna konverzija varijabli se provodi za varijable koje su deklarirane s tipom. Powershell 

dopušta implicitnu konverziju ukoliko je moguća. 

Ukoliko implicitna konverzija nije moguća, dobijemo poruku o grešci. Na primjer, vrijednost „Moj tekst“ 

ne možemo pretvoriti u cjelobrojnu vrijednost. 

Upišimo: 

$var[2] = "Moj tekst" 

 

Page 24: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  24

Zadatak 7: Rad sa stringovima 

U ovom zadatku cilj je upoznati se s operatorima koje koristimo za rad sa stringovima. 

Kerirajte dvije varijable, var1 i var2 kao što je prikazano u nastavku (naredbe moraju biti unesene u dvije 

odvojene linije). 

$var1 = "Zdravo " 

$var2 = "svijete" 

Korištenjem (+) operatora spojite (konkatenirajte) stringove. 

$var1 + $var2 

Rezultat operacije je tekst "Zdravo svijete". 

 

Tradicija korištenja fraze Hello World (u našem slučaju "Zdravo svijete") dolazi iz primjera u knjizi "The C 

Programming Language" a preuzet je iz internog memoranduma koji je 1974. za Bell Laboratories 

napisao Brian Kernighan i koji sadrži prvu poznatu verziju: 

main( ) { printf("hello, world"); }  

Od tada veliki broj knjiga o programiranju i skriptiranju počinje primjerom ispisa poruke Hello World. ;) 

Za ispitivanje stringova možemo koristiti .NET string objekt. Korištenjem Length svojstva dobijemo dužinu 

naše poruke. 

Page 25: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  25

 

U Powershellu se koristi veliki broj binarnih operatora, poput operatora za usporedbu. Upišite: 

"Hrvoje Horvat" ‐eq "Hrvoj Horvatic" 

 

Postoji više operatora koje koristimo za uspoređivanje, poput –ne (not equals, nije jednako), ‐gt 

(greather then, veće od), ‐lt (less then, manje od), ‐ge (greather then or equal, veće ili jednako) –le (less 

then or equal, manje ili jednako). 

S formatiranjem se često susrećemo kod pisanja skripti. Prikažimo 12.4 kao 12,40 koristeći formatiranje 

"{0:f2}" ‐f 12.4 

 

Također se često srećemo s formatiranjem datuma. Get‐Date nam daje trenutni datum i vrijeme. 

Get‐Date 

Ukoliko želimo prikazati samo vrijeme možemo koristiti: 

"{0:HH:mm}" ‐f (Get‐Date) 

Page 26: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  26

 

Ukoliko upišemo: 

"{0:hh:mm}" ‐f (Get‐Date) dobijemo vrijeme u 12 satnom formatu. 

 

Page 27: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  27

Zadatak 8: Kreiranje skripte 

 

Skripte su Powershell naredbe pohranjene u datoteku radi olakšanog izvođenja većeg broja naredbi. U 

ovom zadatku naučiti ćete kako napraviti i pokrenuti skriptu. Prije kreiranja skripte, kratak uvod u 

Powershell sigurnost, poznatu kao politike izvođenja (Execution Policies). Osnovno poznavanje politika 

izvođenja je nužno za razumijevanje ograničenja kod izvođenja skripti. 

Pomoću politike izvođenja određujemo koje skripte možemo izvesti. Powershell ima šest politika 

izvođenja: 

Restricted – Ne dozvoljava izvođenje skripti, Powershell se može koristiti samo u interaktivnom 

modu 

All Signed – Dozvoljava izvođenje samo skripti potpisanih (signed) od strane kojoj vjerujemo 

(trusted publisher). 

Remote Signed – Downloadane skripte moraju biti potpisane od strane kojoj vjerujemo. 

Unrestricted – Nema ograničenja, možemo izvoditi sve skripte, moramo odobriti izvođenje. 

Bypass – Nema ograničenja, možemo izvoditi sve skripte, ne moramo odobriti izvođenje (samo u 

2.0) 

Undefined – Nemamo definiranu sigurnosnu politiku (samo u 2.0) 

 

Pažnja: Nakon prvog pokretanja Powershella politika izvođenja je Restricted. 

 

Za prikaz politike izvođenja unesite: 

Get‐ExecutionPolicy 

 

Page 28: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  28

Pažnja: Izmjena sigurnosne politike zahtjeva administrativne privilegije. Pokrenite cmd prompt s Run As 

Administrator privilegijama. 

Prije izvođenja skripte izmijeniti ćemo sigurnosnu politiku u Remote Signed. Za izmjenu politike i njezinu 

provjeru unesite: 

Set‐ExecutionPolicy RemoteSigned 

Get‐ExecutionPolicy 

 

Kreirajmo sada našu skriptu. Za kreiranje skripte ne trebamo specijalni editor. U našem primjeru koristiti 

ćemo Windows PowerShell Integrated Scripting Environment (ISE). ISE nam omogućava izvođenje 

naredbi, izradu, testiranje i debugiranje skripti. 

Za kreiranje skripte, otvorimo ISE (Start | All Programs | Accessories | Windows PowerShell | Windows 

PowerShell ISE). ISE se sastoji od tri prozora (panes). 

Script Pane, na vrhu, služi za pisanje, editiranje i izvođenje funkcija i skripti. 

Command pane na dnu se koristi za izvođenje interaktivnih naredbi, isto kao u cmd prozoru u prijašnjim 

primjerima. 

Izlazne vrijednosti nakon izvođenja naredbi prikazuju Output Pane koji je smješten između Script i 

Command prozora. 

Page 29: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  29

 

 

U Script pane unesimo sljedeći kod. 

#test.ps1 

#Pozdrav i točno vrijeme 

"" #Prazna linija 

"Pozdrav " + $env:UserName + "!" 

"Točno vrijeme " + "{0:HH}:{0:mm}" ‐f (Get‐Date)  

""# Prazna linija 

Spremimo datoteku kao Powershell Script File. Odaberimo File izbornik, Save As, upišimo test1.ps1, 

odaberimo lokaciju (na primjer desktop), i odaberemo Save. 

Pažnja: Kod kreiranja skripte ime datoteke mora imati ekstenziju .ps1 

Izvedimo skriptu kreiranu u prethodnom koraku. Odaberimo command pane, korištenjem cd naredbe 

izmijenimo putanju i unesimo onu u kojoj nam je spremljena ps1 datoteka. 

 

Page 30: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  30

Izvedimo: 

.\test1.ps1 

 

Pažnja: Na isti način možemo izvesti skriptu iz cmd konzole. 

Prije imena skripte s putanjom (u našem smo slučaju u istom direktoriju) dodajemo ".\" 

Za ostale načine pokretanja skripti konzultirajte Technet članak: Running Windows PowerShell Scripts. 

Page 31: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  31

Zadatak 9: Rad s providerima 

Windows Powershell nam omogućava rad s podacima koji nisu jednostavno dostupni s komandne linije. 

Podaci koji su dostupni kroz provider prikazani su kao "drive", znači na način sličan datotečnom sustavu. 

Windows Powershell uključuje nekoliko providera za pristup uobičajenim spremištima podataka kao što 

su datotečni sustav, registry, certificate store... 

U ovom zadatku razmotriti ćemo dostupne providere i rad s njima, također ćemo kreirati novi drive 

korištenjem registry providera. 

Otvorite Powershell cmd konzolu i upišite: 

Get‐PSProvider 

 

 

Za pregled dostupnih driveova upišite: 

Get‐PSDrive 

 

Page 32: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  32

Kreirajmo novi drive za HKEY_CLASSES_ROOT hive u registryiju koristeći Registry provider. 

New‐PSDrive ‐Name HKCS ‐PSProvider Registry ‐Root "HKEY_CLASSES_ROOT"   

 

Pažnja: Kao i kod datotečnog sustava, registry se može mijenjati korištenjem Powershell drivea, te se 

nepažljivim izmjenama može narušiti funkcionalnost sustava. 

Pregledajmo sadržaj novog drivea koji smo kreirali (HKCS), na isti način kao da radimo s datotečnim 

sustavom. 

cd HKCS: 

dir .ht* 

Prva komada će nas pozcionirati u naš HKCS drive, a dir će nam prikazati popis objekata u registryiju koji 

odgovaraju filteru (.ht*). 

Pažnja: Dvotočka (:) nakon imena drivea označava izmjenu koja se odnosi na drive različit od datotečnog 

sustava. Dvotočka je neophodna, a ukoliko je nema, Powershell će prijaviti grešku. 

 

Page 33: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  33

Postavimo se u jedan od foldera unutar HKCS drivea: 

cd .html 

dir 

 

Pažnja: Većina naredbi koje koristimo za rad s datotečnim sustavom kao što su dir i cd radi i s većinom 

ostalih providera. 

Page 34: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  34

Zadatak 10: Active Directory 

Za rad s AD Powershell cmdletima moramo prvo učitati odgovarajući modul. Popis modula učitanih na 

računalu dobivamo izvođenjem naredbe: 

Get‐Module 

Inicijalno nemamo dodanih modula, pregled modula koji su nam na raspolaganju dobivamo cmdletom: 

Get‐Module ‐ListAvailable 

 

Učitajmo AD modul: 

Import‐Module ActiveDirectory 

 

Pregledajmo sada cmdlete koji su namjenjeni za rad s AD. 

Pažnja: Svi cmdleti namjenjeni radu s Active Directoryijem u imenu sadrže "‐AD". 

Page 35: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  35

Get‐Command *‐AD* ‐CommandType cmdlet 

 

Vidimo veliki broj cmdleta koji nam mogu poslužiti za upravljanje AD. 

Prisjetimo se koncepta providera i upišimo (svaki cmdlet u poseban red): 

cd AD: 

dir 

cd "DC=demo,DC=local" 

dir 

Page 36: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  36

 

Pažnja: Kod navigacije kroz AD koristimo DistinguishedName svojstvo. 

Postavimo se u Users kontejner i izađimo iz njega. 

cd "CN=Users" 

cd .. 

Kreirajmo sada novi OU. Ukoliko se ne možemo prisjetiti cmdleta pomozimo se Get‐Command i Get‐Help. 

Get‐Command *‐ADOrg* 

Get‐Help New‐ADOrganizationalUnit ‐Examples 

Page 37: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  37

 

Ponovo provjerimo jesmo li u DC=demo,DC=local putanji i izvedimo: 

New‐ADOrganizationalUnit ‐Name PowershellLab  

te  

dir cmdletom verificirajmo uspješno kreiranje OU. 

 

Kreirajmo sada novog korisnika u kontejneru Users. 

cd "CN=Users" 

New‐ADUser –Name "Hrvoje Horvat" –SamAccountName HHorvat –DisplayName "Hrvoje Horvat" –Title "Account Manager" –Enabled $true –ChangePasswordAtLogon $true ‐AccountPassword (ConvertTo‐SecureString "Password1" ‐AsPlainText ‐force) –PassThru 

Page 38: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  38

 

Uporabom dir cmdleta verificirajmo kreiranje korisnika. 

 

Postavimo se u root našeg AD i preselimo kreiranog korisnika u novu OU. 

cd \ 

Move‐ADObject ‐Identity "CN=Hrvoje Horvat, CN=Users, DC=demo,DC=local" ‐TargetPath "OU=PowershellLab,DC=demo,DC=local" 

 

Postavimo se u PowershellLab OU i provjerimo je li korisnik Hrvoje Horvat dodan u OU. 

cd "OU=PowershellLab,DC=demo,DC=local" 

dir 

 

Page 39: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  39

Navedeni način kreiranja korisnika nije lakši i brži od rada kroz GUI, no razmotrimo sljedeći primjer: potrebno je kreirati pet novih korisnika (u PowershellLab OU) čiji podaci su smješteni u csv datoteci. 

Postavimo se u root. 

cd \ 

Napravimo .csv datoteku koja sadrži ove ili slične vrijednosti (spremimo ju npr. u c:\temp direktorij). 

 

Pažnja: Imena kolona su namjerno prilično "nestandardna" da bi dokazali fleksibilnost sljedećeg cmdleta. 

Upišimo: 

Import‐Csv ‐Path c:\temp\users.csv | foreach {New‐AdUser ‐Name $_.ime_prezime ‐SamAccountName $_.username ‐Displayname $_.ime_prezime ‐Title $_.RadnoMjesto ‐Enabled $true ‐AccountPassword (ConvertTo‐SecureString $_.zaporka ‐AsPlainText ‐force) ‐PassThru ‐Path "OU=PowershellLab,DC=demo,DC=local"} 

 

 

Kroz Powershell ili ADUC konzolu provjerimo uspješno kreiranje novih korisnika. 

 

Page 40: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  40

 

Onemogućimo (disable) account Hrvoje Horvat. 

Set‐ADUser ‐Identity "CN=Hrvoje Horvat,OU=PowershellLab,DC=demo,DC=local" ‐Enabled $false 

 

Za provjeru prethodne akcije poslužimo se Search‐ADAccount cmdletom. 

Search‐ADAccount ‐AccountDisabled ‐UsersOnly ‐SearchBase "OU=PowershellLab,DC=demo,DC=local" 

 

Jedna od novih sposobnosti AD DS u 2008 R2 verziji je AD Recycle Bin. Razmotrimo njegovu aktivaciju i osnove rada. 

Za uspješnu aktivaciju Forest Functional Level mora biti na 2008 R2 razini. Nakon aktivacije AD Recycle Bin se ne može deaktivirati. 

Provjerimo je li Domain Functional Level na odgovarajućoj razini te ga podignimo ukoliko je potrebno. 

Page 41: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  41

 

 

Provjerimo je li Forest Functional Level na odgovarajućoj razini te ga podignimo ukoliko je potrebno. 

Get‐ADForest 

 

Pažnja: U demo labu Forest Mode je Windows2003Forest pa je podignut uporabom cmdleta 

Set‐ADForestMode ‐Identity demo.local ‐ForestMode Windows2008R2Forest 

Page 42: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  42

 

Potvrdimo: 

Get‐ADForest 

 

 

Upišimo: 

Enable‐ADOptionalFeature –Identity "CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=demo,DC=local" –Scope ForestOrConfigurationSet –Target "demo.local" ‐whatif    

Prisjetimo se ‐whatif mogućnosti i provjerimo što će se dogoditi kada izvedemo cmdlet. 

 

Izvedimo cmdlet bez –whatif: 

Enable‐ADOptionalFeature –Identity "CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=demo,DC=local" –Scope ForestOrConfigurationSet –Target "demo.local"  

Page 43: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  43

 

Pažnja: Ukoliko dođe do brisanja objekta iz AD, a Recycle Bin nije omogućen, nakon njegove aktivacije nije moguće vratiti objekte izbrisane prije aktivacije. 

Uvjerimo se da je Recycle Bin uspješno omogućen: 

Get‐ADOptionalFeature ‐Filter * 

 

 

Izbrišimo korisnika Damir Zelenic. 

Prije vraćanja potrebno je prvo locirati izbrisani objekt, koristiti ćemo Get‐ADObject cmdlet. 

Get‐AdObject ‐Filter {DisplayName ‐like "Dam*"} ‐IncludeDeletedObjects 

 

 

Za vraćanje, prethodni cmdlet pipelinajmo u Restore‐AdObject. 

Get‐AdObject ‐Filter {DisplayName ‐like "Dam*"} ‐IncludeDeletedObjects | Restore‐ADObject 

Page 44: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  44

 

U ADUC konzoli provjerimo je li se izbrisani objekt vratio (potreban refresh). 

2008 R2 Windows Server ima ugrađen Best Practice Analyzer za instalirane role. 

 

Nakon pokretanja BPA vrlo često dobivamo poruku o postojanju OU koji nisu zaštićeni od slučajnog brisanja. 

 

Page 45: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  45

Problem je u tome što BPA ne prijavljuje koji su to OU. ;) Isključimo Protect object from accidental deletion i za PowershellLab OU. 

 

Pažnja: U View izborniku moraju biti odabrani Advanced Features. 

Pozovimo Powershell upomoć. 

Pregledajmo sve propertye na svim OU.  

Get‐ADorganizationalUnit ‐Filter * ‐Properties * 

 

Page 46: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  46

Na dnu slike primjetite property ProtectedFromAccidentalDeletion. 

Iskoristimo ga i prikažimo sve OU koje nisu zaštićene od slučajnog brisanja. 

Get‐ADOrganizationalUnit ‐Filter * ‐Properties * | ? {$_.ProtectedFromAccidentalDeletion ‐eq $false} 

Pažnja: Simbol "?" se koristi umjesto where.  

 

 

Ukoliko nam je prikaz nejasan filtrirajmo ispis uporabom fl (format‐line) cmdleta i prikažimo samo DistinguishedName property. 

Get‐ADOrganizationalUnit ‐Filter * ‐Properties * | where {$_.ProtectedFromAccidentalDeletion ‐eq $false} | fl Distin* 

 

Iskoristimo pipeline i svim OU koji su imali ProtectedFromAccidentalDeletion false postavimo ga na true. 

Get‐ADOrganizationalUnit ‐Filter * ‐Properties * | where {$_.ProtectedFromAccidentalDeletion ‐eq $false} | Set‐AdOrganizationalUnit ‐ProtectedFromAccidentalDeletion $true 

 

Također, uvjerimo se da više nemamo OU nezaštićenih od brisanja uporabom Get‐ADOrganizationalUnit. 

Page 47: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  47

Zamislite da smo ovo morali odraditi na par stotina OU kroz GUI. 

U zadnjem dijelu vježbe pokušali smo prikazati put rješavanja problema kroz Powershell. Nije potrebno učiti stotine cmdleta napamet. Znamo da je potrebno odraditi akciju na Organizational Unitu. Ukoliko nismo sigurni koji cmdleti su nam na raspolaganju uvijek se možemo pomoći Get‐Command, Get‐Help kombinacijom. Nakon odabira cmdleta selektirali smo sve OU i pregledali propertye, te smo pronašli ProtectedFromAccidentalDeletion koji nam se čini kao ključ problema. Mogli smo koristiti i Get‐Member cmdlet za pregled svih propertya. 

Uporabom par osnovnih Powershell tehnika (filtriranje, formatiranje ispisa, pipeline) vrlo brzo smo došli do elegantnog Powershell rješenja koje nam može uštedjeti sate "klikanja". 

 

Page 48: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  48

Zadatak 11: Windows Management Instrumentation 

WMI (Windows Management Instrumentation) omogućava skriptnim jezicima kao što su Powershell (ili 

VBScript) upravljanje radnim stanicama i poslužiteljima. 

Upoznati ćemo se s postavljanjem upita (query) prema WMI providerima, te ćemo vidjeti kako dobiti 

jasne i čitke izlazne podatke. 

Prvo ćemo pregledati popis svih WMI klasa na našem računalu. 

Get‐WMIObject –list | more 

 

 

Pažnja: gwmi je alias za Get‐WMIObject cmdlet. 

Lista iz prethodnog primjera nije pregledna. Prikažimo rezultate samo za klase čije ime počinje s 

“Win32_n*” i formatirajmo ispis kao tabelu prikazujući samo Name property. 

Page 49: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  49

 

Alternativni mehanizam za postavljanje WMI upita je korištenje WMISearcher. Za kreiranje WMISearcher 

objekta izvedite: 

$queryObj = [WMISEARCHER] 'Select * from Win32_NetworkAdapterConfiguration where 

IPEnabled="true"' 

Pažnja: WMISearcher koristi WMI Query Language (WQL) za postavljanje WMI upita. WQL je sličan SQL. 

Nakon kreiranja WMISearcher objekta, izvedimo upit i prikažimo rezultate u tabličnom formatu.  

$queryObj.get() | Format‐Table Index, IPAddress, Description ‐AutoSize 

 

Dobili smo popis mrežnih adaptera koje koristimo. 

Page 50: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  50

Pomoću Win32_Process klase pokrenuti ćemo i zaustaviti Notepad. 

Kreirajmo varijablu koja će sadržavati WMI objekt za kreiranje Win32_Process. 

$notepadProcCreator = [WMIClass]"Win32_Process" 

Proces ćemo kreirati korištenjem Create metode na prethodno kreiranom objektu. Metoda prihvaća ime 

procesa kao parametar. 

$notepadProcInfo = $notepadProcCreator.Create("notepad.exe") 

Izvođenje komade pokreće Notepad. 

Verificirajmo da je proces uspješno pokrenut, za prikaz informacija o procesu upišite: 

$notepadProcInfo 

 

Selektirajmo proces koji smo maloprije kreirali. 

$notepadProc = Get‐WmiObject ‐Class "Win32_Process" | Where {$_.ProcessId ‐eq 

$notepadProcInfo.ProcessId} 

i prikažimo informacije o njemu. 

$notepadProc 

Page 51: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  51

 

Za zaustavljanje procesa pozovimo Terminate metodu. 

$notepadProc.Terminate() 

Notepad se zatvorio. 

 

Page 52: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  52

Također, pregledajmo informacije o OS na računalu uporabom WMI. 

gwmi ‐class win32_operatingsystem | fl * 

 

Page 53: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  53

Zadatak 12: Remoting i izvođenje zadatka u pozadini 

Powershell 2.0 omogućava izvođenje cmdleta na jednom ili više udaljenih računala s radne stanice na kojoj je instaliran Powershell. Powershell Remoting izgrađen je na WinRM, Microsoftovoj implementaciji WS‐MANAGEMENT industrijskog standarda. Za izvođenje naredbi ista verzija Powershella i WinRM mora biti instalirana na lokalnom i svim udaljenim računalima. 

Powershell remoting podržava više načina rada kao što su interaktivni (1:1), fan‐out (1:više), fan‐in (više:1 uporabom IIS hosting modela) i implicitni remoting 

Pokrenimo Powershell s administrativnim privilegijama. Konfigurirajmo Powershell za Remoting. 

Enable‐PSRemoting (odaberimo Y ili pritisnimo Enter) 

 

Nakon kreiranja persistent sessiona možemo izvoditi cmdlete dok je session aktivan. Prekidi u mrežnom 

prometu će prekinuti session. 

Pažnja: Navedene cmdlete potrebno je izvoditi iz eleviranog cmd prompta. Ukoliko se spajamo na 

udaljeno računalo (ne na localhost) elevacija nije potrebna.  

Kreirajmo session na našem računalu (localhost). Ukoliko se spajamo na udaljeno računalo moramo 

navesti ime računala na primjer New‐PSSession ime_udaljenog_racunala. 

New‐PSSession 

Page 54: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  54

 

Izlistajmo sve sessione i spremimo ih u varijablu. 

Get‐PSSession 

$session = Get‐PSSession 

Za pregled servisa koji se izvode na udaljenom računalu izvedimo: 

Invoke‐command –session $session –scriptblock {get‐service} 

 

Page 55: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  55

Pošto se cmdlet izvodi na udaljenom računalu, tip objekta koji dobivamo neće biti isti kao kod izvođenja 

na lokalnom računalu. Za ispitivanje tipa na lokalnom računalu upišite: 

get‐service | get‐member 

 

 

Primjetimo da je tip objekta System.ServiceProcess.ServiceController i da sadrži metode i propertye. 

Za ispitivanje remote tipa unesimo 

Invoke‐command –session $Session –scriptblock {get‐service} | get‐member 

Page 56: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  56

 

Primjetite da je tip Deserialized.System.ServiceProcess.ServiceController i da sadrži samo propertye. 

Također možemo izvodite cmdlete kroz više od jednog sessiona. Kreirajmo novi: 

$session2 = new‐pssession 

Izlistajmo sve servise koji počinju sa „s“u oba sessiona. 

Invoke‐command –session $Session, $session2 –scriptblock {get‐service s*} 

 

 

Page 57: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  57

Kod pregleda rezultata, budući da oba sessiona pokazuju na isto računalo, teško je razlučiti pripadnost 

servisa sessionu. 

Za pregled kojem sessionu pripada neki servis izvedimo: 

Invoke‐command –session $Session, $session2 –scriptblock {get‐service s*} | sort *Id | format‐table 

DisplayName,Status,MachineName ‐GroupBy RunspaceId 

 

 

Sessioni za izvođenje cmdleta mogu se kreirati „u letu“, samo za izvođenje pojedinog cmdleta. 

Invoke‐command –ComputerName localhost –Scriptblock {get‐process p*} 

kreira session, izvodi get‐process p* i uništava session nakon izvođenja. 

Page 58: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  58

 

Uporabom: 

Get‐PSSession  

verificirajmo da nema novih otvorenih sessiona. 

Demonstrirati ćemo 1:1 remoting scenario, sličan radu s telnet/ssh protokolima. 

Izvedimo: 

Enter‐PSSession localhost 

Pažnja: Primjetite promjenu u promptu koja ukazuje gdje izvodimo cmdlet. U slučaju „stvarnog“ 

udaljenog računala umjesto localhost bi imali njegovo ime. 

Svi cmdleti će biti izvedeni u remote sessionu i pristup lokalnom računalu nije moguć do izlaska iz 

sessiona. Cmdleti izvedeni u remote sessionu nemaju uticaja na lokalni. Izvedimo: 

$pid  

$a = “hello world”  

$a 

Exit  

$pid  

$a 

Page 59: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  59

 

Pažnja: Primjetite različite vrijednosti varijabli $pid i $a u remote i lokalnom sessionu. 

Ideja je izvesti cmdlet na udaljenom računalu, te dobiti metapodatke lokalno. 

Uporabom postojećeg sessiona kreirajmo funkciju i verificirajmo da nije dostupna u lokalnom. 

Invoke‐command –session $session –scriptblock {function Hello‐World {“Hello world from remote 

machine”}} 

Invoke‐command $session {Hello‐World} 

Hello‐World 

 

Prebacimo metapodatke za funkciju na lokalno računalo. 

Import‐PSSession $session –CommandName Hello‐World 

Page 60: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  60

 

Izvedimo naredbu kao da je izvodimo na lokalnom računalu. 

Hello‐World 

Get‐Command Hello‐World 

 

Izvođenje dugotrajnih cmdleta ili skripti blokira Powershell konzolu, pa je korisnik ne može koristiti do 

završetka procesiranja. Powershell 2.0 podržava pozadinsko izvođenje zadataka, te nam konzola ostaje 

dostupna dok se dugotrajni zadaci izvršavaju u pozadini. 

Start‐Job –Scriptblock {get‐process s*} 

Get‐Job | gm 

Page 61: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  61

 

Pregledajmo rezultate dobijene izvođenjem prethodnog cmdleta. 

 

Page 62: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  62

 

Korištenjem sessiona iz prethodnih vježbi pokrenimo isti cmdlet (Get‐process) u pozadini. 

Invoke‐Command $session,$session2 {get‐process p*} ‐AsJob ‐JobName RemoteJob 

$jobs = Get‐Job –Name RemoteJob 

 

Pregledajmo zadatke, te također izlistajmo pojedinačne rezultate. 

$jobs.ChildJobs 

Receive‐Job $jobs.ChildJobs[0] 

Receive‐Job $jobs.ChildJobs[1] 

 

 

Pregledajmo otvorene sessione i izvedimo cmdlet na udaljenom računalu. 

Page 63: PowerShell u SYS -   · PDF file2 Sadržaj Zadatak 1: Upoznajmo Powershell Help 4 Zadatak 2: Izlistajmo Powershell cmdlete 8 Zadatak 3: Parametri i filtriranje podataka 9

  63

Get‐PSSession 

Invoke‐Command –session (Get‐PSSession) {Start‐Job {gps p*} } 

 

Pregledajmo „Job“ objekt za svaki session i izlistajmo rezultate iz jednoga od njih. 

Invoke‐Command $session {Get‐Job} 

Invoke‐Command $session2 {Get‐Job} 

Invoke‐Command $session2 {Receive‐Job (Get‐Job)} 

Invoke‐Command $session2 {Remove‐Job (Get‐Job)} 

 

 

 


Recommended