Windows PowerShell

Taustainfo

Iga Microsoft DOSi ja Microsoft Windowsi väljalase personaalarvutitele on sisaldanud käsuinterpretaatorit. Nendeks on COMMAND.COM (tuli kaasa MS-DOS installatsiooniga) ja cmd.exe (Windows NT perekonna operatsioonisüsteemidele). Shell ehk käsureainterpretaator toetab tähtsamaid põhikäske. Nõudlikemate ülesannete puhul tuleb eraldi konsoolirakendus välja kutsuda. Shell sisaldas ka skriptimiskeelt (batchfailid), mida saab kasutada erinevate ülesannete automatiseerimiseks. Siiski ei saa shelli kasutada, et automatiseerida GUI funktsionaalsuse kõiki tahke. Seda osaliselt seetõttu, et käsurea käskude vasted graafilise liidese võimalustele on piiratud ja osaliselt seetõttu, et skriptimiskeel on algeline ning ei võimalda luua keerulisi skripte. Windows Server 2003-s olukord paranes, aga skriptimisvõimalusi peeti ikkagi mitterahuldavateks.
Microsoft üritas neid puudujääke parandada, tutvustades 1998. aastal Windows Script Hosti Windows 98-le ja selle käsureahosti cscript.exe. See lõimub Active Script mootoriga ja lubab skripte kirjutada ühilduvates keeltes, nagu näiteks JScript ja VBScript, mõjutades rakenduste APIsid COM abil. Kuid sellel on ka omad puudused: see ei ole integreeritud shelli, selle dokumentatsioon pole kergesti kättesaadav ja see sai endale süsteemi nõrga lüli maine pärast seda, kui mitu prominentset arvutiviirust kasutasid ära selle turvaauke. Erinevad Windowsi versioonid pakkusid mitmesuguseid eriotstarbelisi käsuinterpretaatoreid (näiteks netsh ja WMIC) igaüks oma käsustiku settidega. Mitte ühtegi neist ei integreeritud shelliga.
2002. aastal lähenes Microsoft käsurea halduse arendusele uutmoodi, luues shelli nimega Monad (samuti tuntud kui Microsoft Shell või MSH). Shell ja selle ideed avaldati augustis 2002 valges raamatus pealkirjaga Monad Manifesto. Monad oli uus laiendatav shell värske disainiga, mis oli võimeline automatiseerima suure hulga administratiivseid ülesandeid. Microsoft esmaesitles Monadit 2003. aasta septembris Los Angeleses Professional Development Conference'il. Suletud beetatestimine algas mõned kuud hiljem, mis ajapikku jõudis avaliku beetatestimiseni.
Microsoft avaldas esimese Monadi avaliku beeta 17. juunil 2005; teise beeta 11. septembril 2005 ja kolmanda beeta 10. jaanuaril 2006. Juba 25. aprillil 2006 teatas Microsoft ametlikult Monadi ümbernimetamisest Windows PowerShelliks ja asetas selle tähtsale kohale oma haldustehnoloogiate pakkumistes. Samaaegselt lasti välja ka PowerShelli esimene väljalaskekandidaat. Tähtis aspekt nii nimevahetuse kui ka väljalaskekandidaadi juures oli see, et nüüdsest oli see Windowsi komponent, mitte järjekordne add-on toode.
PowerShelli teise väljalaskekandidaadi esimene versioon lasti välja 26. septembril 2006 ning lõplik väljalase veebi toimus 14. novembril 2006 TechEd üritusel Barcelonas. Varasematele Windowsi versioonidele lasti PowerShell välja 30. jaanuaril 2007.
PowerShell v2.0 arendus algas Microsoftile tüüpiliselt enne seda, kui PowerShell v1.0 välja lasti. PowerShell v2.0 saadi valmis ja lasti välja 2009. aasta augustis, integreerides selle Windows 7-sse ja Windows Server 2008 R2-e. PowerShelli versioonid Windows XP-le, Windows Server 2003-le, Windows Vistale ja Windows Server 2008-le lasti välja 2009. aasta oktoobris ning need on allalaadimiseks saadaval 32-bitistele ja 64-bitistele platvormidele.

Cmdlets

Cmdlets-id on spetsiaalsed käsud PowerShelli keskkonnas, mis rakendavad spetsiifilisi funktsioone. Need on põlised käsud PowerShelli stackis. Cmdlets järgib <tegusõna>-<nimisõna> nimemustrit, nagu näiteks Get-ChildItem. See aitab teha nad iseennast kirjeldavaks. Cmdlets-id väljastavad oma tulemusi objektidena või nende kollektsioonidena. Nad saavad valikuliselt võtta vastu sisendit selles vormis, mis teeb nad sobivaks vastuvõtjaks torus. Samal ajal kui PowerShell võimaldab jadasid ja teisi objektide kollektsioone kirjutada torru, töötlevad cmdlets-id alati objekte individuaalselt. Objektide kollektsioonide jaoks kutsub PowerShell välja iga kollektsioonis oleva objekti cmdlets-id järjekorras.

Toru

PowerShell kasutab toru kontseptsiooni, mis võimaldab ühe cmdlets-i väljundit kasutada teise cmdlets-i sisendina. Näiteks, Get-Process cmdlets-i väljundit saab kasutada Sort-Object cmdlets-i sisendina, seejärel saab Where-Object filtreerida kõiki protsesse, millel on vähem kui 1 MB paged mälu ja lõpuks Select-Object cmdlets valib kümme esimest. PowerShelli toru erineb Unixi analoogist selle poolest, et torus söödetakse läbi etappide struktureeritud .NET objektid, mitte tüüpiliselt ebastruktuurne tekst. Objektide kasutamine eemaldab vajaduse sõeluda teksti väljundit, et ammutada andmeid.

Skriptimine

Windows PowerShell sisaldab dünaamiliselt trükitavat skriptimiskeelt, mis saab implementeerida keerulisi operatsioone kasutades cmdlets-e imperatiivselt. Skriptimiskeel toetab muutujaid, funktsioone, hargnevust (if-then-else), tsükleid (while, do, for, foreach) ja erindite töötlemist. Samuti toetab see lõimumist .NET-iga. Muutujatel on PowerShelli skriptides nimi, mis algab dollarimärgiga($), neile saab määrata ükskõik mis väärtusi, kaasaarvatud cmdlets-ide väljundeid. Sõnesid saab lõpetada kas ühekordsete jutumärkidega või siis topeltjutumärkidega. Vastavalt muutuja süntaksile, kui tee faili on loogeliste sulgude vahel ja selle ees on dollarimärk (nagu siin: ${C.\foo.txt}), siis see viitab faili sisule.

Versioonid

Kasutades algselt koodnime "Monad", näidati PowerShelli avalikkuse ees Professional Developers Conference'il 2003. aasta septembris. Microsoft on välja lasknud kokku neli PowerShelli versiooni ning neid kõiki endiselt toetatakse.

Versioon 1.0

Versioon 1.0 lasti välja 2006. aastal Windows XP SP2/SP3-le, Windows Server 2003-le ja Windows Vistale. Windows Server 2008 jaoks on see valikuline.