Az utasítások szerkezete PowerShellben mindig a következő: "ige"-"főnév". Ez a szerkezet és még néhány más dolog, amit a későbbiekben látni fogunk, nagyon kényelmessé teszi a Windows PowerShell használatát.
A Windows PowerShell által használt igék itt találhatóak.
A PowerShell szemlélete az, hogy a beépített utasítások egyszerűen használhatóak legyenek és egyszerű szolgáltatásokat nyújtsanak.
Az erőforrások elérésére a Windows PowerShell a "get" igét használja. Szemben más nyelvekkel, nincs megkülönböztetve, hogy milyen erőforrást kívánunk elérni, minden ilyen esetben a "get" kulcsszót kell használnunk (vesd össze pl. Bash: open, cat, display, find stb.).
A "get" párja a "set", ezzel erőforrásoknak adhatunk új értéket.
A get-command utasítás segítségével lekérdezhetjük az aktuális PowerShell munkamenetből elérhető utasításokat. Amennyiben paraméter nélkül hívjuk meg, kilistázza az összes elérhető utasítást, paraméterként azonban érdemes megadni az utasítás nevének ismert részét, így szűkítve a találatokat.
Például ha szükségem van arra a parancsra, ami kilistázza a futó folyamatokat és tudom, hogy valahol a parancs nevében benne van a "process" szó:
Vegyük észre, hogy a keresett utasítás alakja megfelel a bevezetőben említett szerkezetnek, hiszen erőforrásokat (futó folyamatokat) érünk el a segítségével.
Amikor nem tudjuk, hogy egy utasítást hogyan kell használni, mik a paraméterei stb. akkor érdemes kiadnunk ezt az utasítást.
Amennyiben paraméter nélkül hívjuk meg, önmagáról ad leírást - amennyiben egyéb kapcsolót nem használunk - az ilyen leírások szerkezete a következő:
Például ha a "get-process"-ről szeretnénk információkat kapni:
Az alábbi kapcsolókat használhatjuk a get-help utasításnál:
Amennyiben nem parancsokkal, hanem a PowerShell használatával kapcsolatos kérdésünk merül fel és az MSDN valamilyen okból nem elérhető, akkor a PowerShell beépített segédanyagait is a get-help utasítás segítségével érhetjük el.
Az ilyen segédanyagok mindig "about_" -al kezdődnek (idézőjelek nélkül). Ahhoz, hogy megkapjuk az összes beépített segédanyagot tartalmazó listát, az alábbi utasítást kell kiadnunk:
A leggyakrabban használt segédanyagok:
A sort alapértelmezés szerint növekvő sorrendbe rendez a megadott paraméter szerint. A UNIX-os parancsokkal szemben PowerShellben az utasításoknak csak egyféle implementációja van.
Szemben a UNIX-os ps-el, a PowerShell sort-ja nem a folyamatokat listázza ki, hanem a folyamatokat reprezentáló objektumokat.
A használatához lásd a Sort példaprogramot.
Ahhoz, hogy tudjuk, hogy egy objektummal mit tudunk kezdeni, tudnunk kell, hogy az objektum publikus interfésze milyen műveleteket tartalmaz, milyen szolgáltatásokat nyújt. Ennek a kérdésnek a megválaszolásában segít a "get-member" utasítás:
A get-psdrive segítségével megkérdezhetjük a PowerShellt, hogy milyen adatforrások elérhetőek. Nemcsak a fájlrendszer érhető el, hanem megfelelő jogosultásot feltételezve a registry és a certificate-ek is.
Ezek elérése hasonlóképpen történik, mintha a fájlrendszerben lépkednénk, vagyis a cd utasítás segítségével, viszont az elérési út végére egy kettőspontot kell tenni, mintha meghajtót váltanánk.
Ha például a HKEY_LOCAL_MACHINE-t szeretnénk elérni:
A certificate-ek a "cert", a környezeti változók az "env", a PowerShell saját váltózói pedig a "variable" virtuális meghajtón találhatóak.
A "sort"-nál láthattuk, hogy a PowerShell automatikusan döntötte el, hogy az objektumok melyik property-jét listázta ki. Felmerülhet az igény, hogy ezt szeretnénk felüldefiniálni és mi akarjuk eldönteni, hogy mi kerüljön az output-ra. Ennek az eszköze a "select", a szintaxisa SQL szerű a könnyebb használat érdekében.
Például ha ki akarjuk listázni a futó folyamatok nevét és mellé azt, hogy mennyi memóriát allokált magának:
A select-hez található egy bonyolultabb példaprogram is a példaprogramok között.
A WhatIf kapcsoló segítségével a PowerShell megmutatja, hogy az adott utasításnak mi lenne a hatása:
A confirm kapcsolóval a felhasználó dönthet arról, hogy engedélyezi-e az adott utasítás végrehajtását vagy sem:
A lehetséges válaszok:
Vegyük észre, hogy a sort és a dir (és még jópár utasítás), amelyek erőforrásokat érnek el, nem "ige"-"főnév" alakúak.
A Microsoft fejlesztői észrevették, hogy a fejlesztők nagy része nem szeret feleslegesen gépelni, ezért (illetve az utasítások elnevezési konvenciójának fenntartása miatt) vezették be az alias-okat.
A PowerShell rendelkezik néhány beépített alias-al, mint például a "gps" ami a "get-process" szinonímája.
Azt, hogy milyen alias-ok vannak beállítva, a "get-alias" utasítás segítségével nézhetük meg:
Amennyiben nem vagyunk kiváncsiak az összes alias-ra, természetesen megadhatunk szűrőfeltételként reguláris kifejezést:
Az alias-ok elnevezésének néhány konvenciója:
Az alias-ok menedzseléséért felelős utasításokat megkaphatjuk a get-command segítségével:
Változóknak adhatunk utasítást az értékadó operátorok használatával, illetve a "set-variable váltózónév -value érték" cmdlet segítségével. Az utasításokat egy pontosvesszővel zárhatjuk le, amennyiben egy sorban csak egy utasítás szerepel, a pontosvessző elhagyható.
Üres utasítást pedig így adhatunk meg: ; ;
Szekvenciát úgy hozhatunk létre, hogy az elemeit pontosvesszővel elválasztjuk.
Elágazás szempontjából a PowerShellben semmilyen újdonság nincs, megtalálhatóak a if, elseif, else kulcsszavak.
A PowerShellben a más programozási nyelvekben megszokott szintaxisnak megfelelően szerepel a while ciklus:
A PowerShellben a más programozási nyelvekben megszokott szintaxisnak megfelelően szerepel a do-while ciklus:
A PowerShellben a más programozási nyelvekben megszokott szintaxisnak megfelelően szerepel a foreach while ciklus:
A leginkább funkcionális nyelvekre jellemző sorozatfelsorolási szintaxis is használható PowerShellben:
Természetesen a bejárásban részt vevő collection-t a foreach-ben is deklarálhatjuk:
A PowerShellben a más programozási nyelvekben megszokott szintaxisnak megfelelően szerepel a for ciklus:
Jól bemutatható a nyelv kifejező ereje az alábbi példán: egy ciklus (pl.: foreach) kimenetét szeretnénk pipeline-nal továbbítani, a ciklus magjában pedig valamiféle manipulációt végzünk az elemeken (a példában megszorozzuk őket 7-tel). Először az alábbi megoldás juthat egy eszünkbe:
Ez a kód elég hosszú, nem túl jól olvasható és nem is igazán fejezi ki a szándékunkat.
Második nekifutásra sikerül rövidebbé és kifejezőbbé tennünk a kódunkat:
A legszebb megoldást pedig úgy kapjuk, hogy a foreach helyett % jelet használunk:
A PowerShell rendelkezik a más programozási nyelvekben megismert break és continue utasításokkal:
A break alapértelmezés szerint az a ciklust szakítja meg, amelyben meghívjuk, amennyiben ez egy beágyazott ciklus, a külső, befoglaló ciklust nem szakítja meg. Amennyiben mégis ezt szeretnénk, az alábbi megoldást kínálja a PowerShell: