Ovi tutorijali bi trebali biti malo drugačiji. Naime, na poslu se susrećem s PowerShellom, međutim, nisam nikada naučio jezik, ajmo reći, "prirodnim" putem, već samo one segmente koji mi trebaju, te već neko vrijeme sam sebe silim da primim knjigu u ruke i prođem jezik kako spada. Već sam jednom pokušao napraviti seriju tutorijala prije koju godinu, međutim, tada zbog nedostatka vremena je to bio fail biblijskih razmjera. Iskreno se nadam da će ovo biti ponešto drugačije.
Ukratko princip ovog topica bi bio - pričam Vama ono što ja trenutno učim. Neki plan je napisati novi mali tutorijal svakih 7-10 dana i na taj način i sebe prisiliti da polako savladavam gradimo, te u isti trenutak da vidim da li ću ja što kvalitetnije prolaziti kroz materiju ako moram naučeno odmah prezentirati Urbi et Orbi (dobro, ruku na srce mislim ipak mrvicu sporije ovdje prolaziti po PowerShellu jer ovi tutorijali bi bili namjenjeni potpunim početnicima).
No uglavnom,
PowerShell (skarećno PS), skriptni jezik kojim će se baviti ovi tutorijali, je Windowsov pandam Linuxovom bashu uz pokoju razliku, a najočitija je ona da PS (uglavnom) koristi objekte, dok bash radi na principu tekstualnih streamova.
Ja ću ove tutorijale pisati u PS 4.0, odnosno verzijom koja nativno dolazi sa Win 8.1, odnosno sa Win Server 2012(R2 ?). Za pisanje tutorijala koristi ću PowerShell ISE na Windows 8.1 (ili koji će već u to vrijeme biti up-to-date).
Ranije verzije PS-a i ranije verzije Winsa nisu podržane ovim tutorijalom, da se tako izrazim.
Da bi se pokrenuo PowerShell ISE, jednostavno se uđe u Start i upišite powershell. Windowsi bi trebali u desnom dijelu ekrana početi filtrirati što se nalazi na file systemu pod tim imenom, te na vrhu bi vam se trebala pokazati plava ikonica sa natpisom Windows PowerShell. Nakon pokretanja, dobiti će te plavi ekran sa specifičnim PSovim naredbenim retkom.
Da bismo ušli u PowerShell ISE, za sada, samo napišimo naredbu
Start-Process PowerShell ISE -Verb RunAs
Ako je sve u redu bilo napisano, pokrenuli ste Windows PowerShell Integrated Scripting Enviroment (od sada pa nadalje ISE) sa admin ovlastima.
Ako niste već mjenjali opcije u ISE-u, primjetit ćete tri sekcije u samom programu. Desni dio je add-on u kojem se nalazi popis svih, tvz. cmdlets (commandlets). U godnjem dijelu, bijeli dio, je područje za pisanje skripti. Ako ste do sada programirali u nekom IDE-u, taj dio shvatite tao PS-ov IDE. Donji, plavi, dio je interaktivno područje, odnosno naredbeni redak - dio koji radi na sličan (isti?) način kao i, recimo, Pythonov interpreter ili Linuxov shell ili Windowsov stari command prompt.
Za sada ćemo raditi isključivo u tom plavom, interaktivnom području, te možemo sakriti bijelo područje (očito, strogo tehnički nazivi) klikom na "strelicu" u gornjem desnom dijelu (bijelog područja, ne add-ona koji se nalazi na desnoj strani). Isto tako, ako vam je preglednije, možete i addon isključiti tako da ga ubijete na "x". Za ponovno uključivanje, opcije se nalaze u View izborniku (standardna alatna traka na vrhu).
No dobro, da za početak uopće objasnimo kako smo pokrenuli ISE.
Svaka naredba (cmdlets, ja ću koristiti za njih riječ - naredba) u PSu je oblika Verb-Noun, odnosno Glagol-Imenica. Naravno, ako programer (skripter?) dodaje svoje naredbe, one mogu biti u kojem god obliku on hoće, međutim, preporuča se upravo korištenje takve sintakse. Također, postoje podosta aliasa (drugo ime za naredbu, nadimak, u nastavku podrobnije objašnjenje) koji imaju sasvim dručaiji oblik zbog legacy razloga ili da bi se olakšao prijelaz sa basha ili kojih već god razloga.
Primjerice, Start-Process ima aliase "start" i "saps" po defaultu. Naravno korinisk može proširiti tu listu aliasa. Drugim riječim gornju naredbu za pokretanje ISE-a smo mogli napisati i
start PowerShell ISE -Verb RunAs
i
saps PowerShell ISE -Verb RunAs
i oba retka su u potpunosti istovjetna našem gornjem retku što se samih Windowsa tiče.
Nakon naredbe za pokretanje procesa upisali smo ime procesa koji želimo pokrenuti, te smo dodali switch Verb. Switchevi su dodatni argumenti koje prilažemo nekoj naredbi da bi izmjenili ili dopunili njeno izvršavanje. U ovome slučaju sa
-Verb RunAs
rekli smo da želimo pokrenuti process PowerShell ISE sa administratorskim ovlastima (istovjetno kao da smo napravili desni klik na .exe i odabrali Run As Administrator).
U redu, vratimo se našem samom ISE-u.
Vrlo vjerojatno redak u kojem možete pisati naredbe izgleda poput
PS C:\WINDOWS\system32>
Da bismo se pozicionirali u root (odnosno C:\), možemo upisati
cd /
Što je bilo kome tko se susreo sa CMD-om, poznata naredba. cd u PSu je alias za naredbu
Set-Location
Da bismo se uvjerili u to možemo napisati slijedeću naredbu
Set-Location C:\Windows\system32
Ponovno smo pozicionirani u system32 folder. Kada ste upisivali naredbu mogli ste primjetiti nešto kao "padajući izbornik" u kojem su bile izlistane naredbe. Ako ste ikada radili u Visaul Studio, to možete shvatiti kao neizrecivo primitivnu verziju IntelliSensa. Ukratko, kako pišete naredbe u ISE-u, on će vam, s obzirom što ste napisali, ponuditi opcije koje naredbe (ili putanja ili nešto treće) postoje sa napisanim slovima u sebi.
Pokušajmo se sada opet vratiti u root, ali na ovaj način
set-l [TAB] /Odnosno, napišite "set-l", pritisnite tipku "Tab", razmak, "/", enter. Jednom kada "padajući izbornik" (kojeg ćemo od sada pa nadalje zvati IntelliSense), označi (highlighta) naredbu, pritiskom na "Tab" (ili "Enter", ali enter nije dovoljno cool), ISE će (ili bilo koji drugi PS prozor, poput onoga iz kojega smo pokrenuli ISE) će dovršiti naredbu. Štoviše ako ponovno pritisnete Tab, on će početi vrtiti kroz sve naredbe koje odgovaraju vašim napisanim slovima (zato za korištenje IntelliSensa koristite Tab, a za izvršavanje naredbe Enter -> s Enterom se ne može vrtiti kroz IntelliSense).
Za sada bih skrenuo pažnju na još dvije PS naredbe - Get-Command i Get-Help
Ako upišemo u ISE
Get-Commandizlistati će nam se sve trenutno "prijavljene" (za sada nemoj razbijati glavu oko ovoga znaćenje, shvati AS-IS) naredbe.
Kako taj Get-Command učiniti ponešto upotrjebljivim. Recimo da želimo nešto napraviti sa nekim procesom, ali nismo ni sami sigurno kako bi to mogli napraviti sa PSom. Ono što možemo napraviti je zatražiti od PS-a da nam kaže koje sve naredbe trenutno može izvršiti a da u sebi sadrže riječ "process".
Get-Command *process*S gornjom naredbnom smo mu rekli - vrati mi sve naredbe koji u sebi sadrže niz znakova "process". Pimjetite zvijezdice na početku i kraju riječi process. One govore da očekujemo naredbe koje imaju nešto i prije i poslije (ali ne i nužno, odnosno da process može biti na samom kraju naredbe ili na samom početku naredbe) tog znakovnog niza. Ako bi htjeli ispisati sve naredbe koje striktno završavaju na niz "process", tada bi naredba izgledala ovako
Get-Command *processDrugim riječima, zvijezdica je wildcard koji kaže s koje strane očekujemo da bi se mogli pojavljivati neki znakovi pored našeg niza.
Recimo da smo izvršili jednu od gornjih naredbi i da nam je PS vratio nekoliko njih, te nas je zainteresirao Start-Process naredba, međutim, nismo sigurno kako bismo se poslužili tom naredbom. U pomoć nam može priskočiti Get-Help naredba, primjerice
Get-Help Start-Process -Examples
Gornja naredba će nam ispisati primjere korištenja naredbe Start-Process sa objašnjenjima. Moje mišljenje je da gornja naredba
Get-Help <ime naredbe> -Examples
za nekoga tko se uči PS, je daleko najkorisnija naredba koju netko može naučiti i definitivno preporuka je da svaki puta kada naiđete na novu naredbu sa Get-Help -Examples, pogledate što je ona u stanju izvesti.
Za početak to bi bilo to - kako pokrenuti ISE, kako koristiti IntelliSense, pojam aliasa i naredbe Get-Command i Get-Help. Čisto napomena, prije korištenja Get-Help naredbe, bilo bi poželjno napraviti Update helpa, sa
Update-Help
naredbom.
Također, ako želite biti sigurni da ste na istoj verziji PS kao i ja, možete provjeriti tako da u interaktivni redak upišete (ISE ili običan PS prozor)
$PSVersionTable
i provjerite piše li u retku PSVersion je vrijednost 4.0 (ili više). Ako imate stariju verziju, kako napraviti PS update, konzultirajte se sa Googleom. Nažalost, pošto nemam na raspolaganju računalo sa nekom starijom inačicom Winsa, ne mogu opisati postupak updatea. Iako, vjerujem da ako možete pokrenuti ISE u svom OSu (Win 7 ili novije), you are good to go.