A scriptek futtatásához A PowerShell scriptek hagyományosan ps1 kiterjesztésű fájlok. Meghívásuk egyszerű a Powershell konzolból, egyszerűen csak be kell írni a nevüket a konzolba.
Példa: Legyen a scriptünk neve script.ps1 és tegyük fel, hogy ez a C meghajtó gyökerében található, ekkor a scriptünk lefuttatható a C:\script.ps1 beírásával, vagy ha az aktuális könyvtár a C:\ akkor egyszerűen csak ./script.ps1. VIGYÁZAT! A script.ps1 hívás csak akkor működik, ha a scriptünk elérési útja benne van a PATH környezeti változóban.
Elképzelhető, hogy hibaüzenetet kapunk, ekkor próbáljuk meg a script futtatását a "Set-ExecutionPolicy unrestricted" parancs végrehajtása után.
Az alábbi öt egyszerű példaprogramot Lehoczki Krisztián készítette. A scriptek nem túl bonyolult feladatokat oldanak meg, de sok PowerSell sajátosságot bemutatnak. Az 5 program egyben letölthető innen.
A név után zárójelben szerepel a scriptfájl neve, és a feladatleírás végén találhatóak a kulcsszavak, amelyek a program írása közben fontos szerepet játszottak.
Maximumkeresés a paramétertömbben (maxker.ps1)
A paraméterként megadott számok közül (a program a szöveges paramétereket hagyja ki) válasszuk ki a legnagyobbat.
paraméterkezelés, típusegyeztetés
Maradékos osztás (divide.ps1)
Számoljuk ki a paraméterben megadott két szám hányadosát (alsó egészrész) és osztási maradékát. A program jelezze, ha nullával akarunk osztani.
típusos változók, kivételkezelés
Két fájl összefésülése soronként(merge.ps1)
Fésüljünk össze két paraméterként teljes elérési úttal megadott szöveges fájlt a result.txt nevű fájlba.
fájlkezelés, kimenet átirányítása fájlba
Megadott programok erőszakos bezárása(killall.ps1)
A paraméterként megadott programnevek minden futó példányát zárjuk be, és írjuk ki a bezárt példányok számát fajtánként. Tegyük fel, hogy a megadott programnév helyes, és fut belőle legalább egy példány.
cmdletek használata, valós probléma megoldása, objektumkezelés
A felhasználó üdvözlése grafikus felülettel (gui.ps1)
Készítsünk grafikus alkalmazást, ami felületen megadott név alapján üdvözli a felhasználót gombnyomásra.
Grafikus .NET alkalmazás készítése
Készítés éve: 2009
Szerző neve: Horváth András
Használt fejlesztőeszköz: Windows Powershell 1.0
A beépített Sort utasítást (pontosabban: Sort-Object -et) szemléletető példaprogram.
Az 1 gigabájtnál több szabad hellyel rendelkező meghajtókat listázza ki a program.
Futtatás előtt ahhoz, hogy be tudjuk tölteni a Powershell munkamenetünkbe a példaprogramot, ki kell adni a "Set-ExecutionPolicy unrestricted" utasítást (idézőjelek nélkül). Vista alatt rendszergazdaként kell elindítani a Powershell-t, máskülönben nem lesz jogosultságunk kiadni az utasítást. Pl.:
Ezután lépjünk abba a könyvtárba, ahová kicsomagoltuk a példaprogramot és töltsük be az alábbi parancs segítségével:
Ezután mint bármilyen más utasítást, hívhatjuk meg a példaprogramot:
Készítés éve: 2009
Szerző neve: Horváth András
Használt fejlesztőeszköz: Windows Powershell 1.0
A beépített Select utasítást szemléletető példaprogram.
Kilistázza azoknak a futó folyamatoknak a nevét és az általuk allokált memóriát, amelyek több mint 20 megabájt memóriát allokáltak maguknak.
Futtatás előtt ahhoz, hogy be tudjuk tölteni a Powershell munkamenetünkbe a példaprogramot, ki kell adni a "Set-ExecutionPolicy unrestricted" utasítást (idézőjelek nélkül). Vista alatt rendszergazdaként kell elindítani a Powershell-t, máskülönben nem lesz jogosultságunk kiadni az utasítást. Pl.:
Ezután lépjünk abba a könyvtárba, ahová kicsomagoltuk a példaprogramot és töltsük be az alábbi parancs segítségével:
Ezután mint bármilyen más utasítást, hívhatjuk meg a példaprogramot:
Készítés éve: 2009
Szerző neve: Horváth András
Használt fejlesztőeszköz: Windows Powershell 1.0
RSS-olvasó program.
A paraméter által megadott rss-t beolvassa, majd kiírja az utolsó 5 bejegyzést, amennyiben paraméter nélkül hívjuk meg, akkor az Order of the Stick webcomic rss-ét fogja beolvasni.
Futtatás előtt ahhoz, hogy be tudjuk tölteni a Powershell munkamenetünkbe a példaprogramot, ki kell adni a "Set-ExecutionPolicy unrestricted" utasítást (idézőjelek nélkül). Vista alatt rendszergazdaként kell elindítani a Powershell-t, máskülönben nem lesz jogosultságunk kiadni az utasítást. Pl.:
Ezután lépjünk abba a könyvtárba, ahová kicsomagoltuk a példaprogramot és töltsük be az alábbi parancs segítségével:
Ezután mint bármilyen más utasítást, hívhatjuk meg a példaprogramot: (megadhatunk paraméterként rss elérési utat is)
Készítés éve: 2009
Szerző neve: Horváth András
Használt fejlesztőeszköz: Windows Powershell 1.0
Grafikus RSS-olvasó program.
A paraméter által megadott rss-t beolvassa, majd kiírja az utolsó 5 bejegyzést, amennyiben paraméter nélkül hívjuk meg, akkor az Order of the Stick webcomic rss-ét fogja beolvasni.
A futtatáshoz szükséges, hogy betöltsük az rssExample.ps1 fájlt is.
Futtatás előtt ahhoz, hogy be tudjuk tölteni a Powershell munkamenetünkbe a példaprogramot, ki kell adni a "Set-ExecutionPolicy unrestricted" utasítást (idézőjelek nélkül). Vista alatt rendszergazdaként kell elindítani a Powershell-t, máskülönben nem lesz jogosultságunk kiadni az utasítást. Pl.:
Ezután lépjünk abba a könyvtárba, ahová kicsomagoltuk a példaprogramot és töltsük be az alábbi parancs segítségével:
Ezután mint bármilyen más utasítást, hívhatjuk meg a példaprogramot:
Készítette: Erdélyi Viktor, 2010
Fejlesztőkörnyezet: PowerShell ISE x64
A példakódok UTF-16(!) kódolásúak (ez a PowerShell ISE alapértelmezése).
TARGET=mappa formátumban kell a célmappákat megadni. Amelyik sorban csak egy elérési útvonal szerepel, azt forrásnak tekinti.
A program célja az összes hallgató beadandójának automatikus ellenőrzése. A beadandókat lefuttatja az előre megadott tesztfájlokon, és a kimeneteiket összehasonlítja a referenciaeredményekkel.
A program egy lehetséges kimenete
A példabeadandó a következő feladatot oldja meg:
Adott a "menetrend.txt" adatfájl, ami egy adott reptérről induló gépek menetrendjét tartalmazza a következő alakban:
(A járatszám minimum 5, maximum 7 hosszú, a malév járatok esetén 'MA' karakterekkel kezdődő karaktersorozat, a várható felszállási időpont nem szerepel kötelezően, ilyenkor a várható időpont a tervezettel egyezik meg.)
Készíts olyan programot, ami a fentiek alapján elkészít egy "malev.txt", illetve egy "frankfurt.txt" elnevezésű fájlt. A "malev.txt" fájl (az alábbi példában leírt alakban) tartalmazza azon malév járatok járatszámát (az MA karakterek nélkül), felszállási idejének várható időpontját és célállomását, melyeknél a várható felszállási időpont 10:00-nál későbbi. Azaz a fenti menetrend esetén:
A "frankfurt.txt" fájl (az alábbi példában leírt alakban) tartalmazza a Frankfurtba induló gépek járatszámát és tervezett indulási idejét. Azaz a fenti menetrend esetén:
Egy fájl tartalmát karakterenként különböző színnel kiírja a képernyőre
Paraméterek: Filename és egy opcionális RandomBackground kapcsoló
Használat:
Ekkor a program önmaga forráskódját fogja kiírni véletlenszerű színekkel.
Ekkor a karakterek háttérszíne is véletlenszerűen választódik ki.
Egy tab-delimited CSV formátumú szótárfájlból SQL INSERT utasításokat készít. A bemeneti fájl nevét (kiterjesztés nélkül) paraméterként kell megadni, és két oszlopot kell tartalmaznia, tabulátorjellel elválasztva. A kimeneti fájl neve <inputfájlnév>-csv2oracle-v2.sql lesz.
Megj.: A forráskódot használat előtt ajánlott testreszabni, pl. a generált SQL utasításban átírni a tábla és az oszlopok nevét a megfelelő értékekre.
Egy rövid példa arra, hogy hogyan lehet szűrőket (filtereket) készíteni PowerShellben.
Egy adott mappában található fájlok átlagméretét adja meg. A mappát paraméterként kell megadni.
Get-AverageFileSizeInFolder.zip
A paraméterként kapott mappából rekurzívan kigyűjti a fájlokat, kiválogata a Haskell forráskódokat (*.hs), és a tartalmukban megszámolja a valódi kódsorokat. (Valódi kódsor: nem kommentjellel kezdődik (--), és nem 0 hosszú)
Az ipconfig kimenetét értelmezi, és a hálózati adapterekre vonatkozó fontosabb információkat egy formon megjeleníti.
Motiváció: Vista óta az IPv6 támogatás bevezetésével az ipconfig kimenetében elszaporodtak a tunnel interface-ek, eltakarva a "valódi" interface-eket. Ez a script a tunnel interface-eket kiszűri, és a többiből is csak az IPv4 címet, valamint az alhálózati maszkot jelenítni meg, hagyományos és bináris formában.
Megj.: a program Windows 7 x64 alatt készült, de előfordulhat, hogy Vistán is működik.
Egy rövid példa .NET nyelvek PowerShellben való használatára. A program C# és Visual Basic nyelven írt kódok együttműködését mutatja be.
COM interface segítségével megnyit egy Internet Explorer böngészőablakot, és betölti a Microsoft oldalát.
Ez a program lényegében egy Visual Studio 2010 alatt készített C# kód, ami azt hivatott bemutatni, hogy .NET kódból hogyan lehet PowerShell parancsokat futtatni.
A registry PowerShell alatt a Registry Provideren keresztül elérhető, és meghajtóként használható. Ennek használatát mutatja be ez a példa.
Megj.: ennél a példánál a forráskód tanulmányozása hasznosabb/érdekesebb lehet, mint maga a futtatás.
Egy minimális példa az out-gridview használatára. Lekérdezi az ismert service-eket, és WPF Grid-ben grafikusan jeleníti meg az eredményt.
Sok néhány soros példa egy fájlba összegyűjtve, kommentekkel ellátva. Kipróbálni egyenként kimásolva érdemes őket.
Egy tesztfájlt generál véletlenszámok segítségével. A generált fájl szerkezete:
A Get-WmiObject parancs sokoldalú lehetőségeit szemléltető, egyszerű program. Találhatunk benne példát a kimeneti sztring igazítására is.
Az utasítások végrehajtása során sokféle hiba léphet fel. Ha egy hiba nem okozza az egész script terminálását, akkor lehetőségünk van eldönteni, hogy mit kezdjen a PowerShell ezzel a hibával. Az alábbi script egy bekért néven keres futó processt. Ha rossz nevet adunk meg neki, akkor is megnézi, hogy fut-e épp, de az így keletkező hiba nem állítja meg az alkalmazást.
Az alábbi script többek között azt szemlélteti, hogy hogyan tudunk PowerShellben elérni más szerveralkalmazásokat. Ezenfelül példát ad a html kimenet egyszerű előállítására is.
Egy megadott SQL szerverhez csatlakozik, ahol a megadott adatbázisban lévő táblák listáját írja ki. Jól szemlélteti, hogy hogyan lehet csatlakozni ConnectionString felhasználásával és hogy hogyan lehet egy DataSet-be betölteni az adatokat.
A Gmail SMTP szerveréhez csatlakozva lehetőséget ad, hogy emailt küldjünk a gmail fiókunkból PowerShell-en keresztül. Indítás után bekéri az email adatait (címzett, tárgy, levél), majd egy windows-authentikációs ablakban meg kell adni a feladó Gmail postafiók nevét és jelszavát.