Mine sisu juurde

Windows PowerShell

Allikas: Vikipeedia
Redaktsioon seisuga 8. detsember 2013, kell 15:25 kasutajalt Lorenx (arutelu | kaastöö)

Windows PowerShell on Microsofti ülesannete automatiseerimise ja konfigureerimise haldustööriist, mis koosneb käsuinterpretaatorist ja skriptimiskeelest ja on loodud .NET Framework'is. PowerShell võimaldab täielikku ligipääsu COM-ile ja WMI-le, võimaldades administraatoritel sooritada administreerivaid ülesandeid nii kohalikes kui ka kaugjuhitavates Windowsi süsteemides. Samuti võimaldab PowerShell ligipääsu WS-Managementile ja CIM-ile, mis võimaldavad kaughallata Linuxi süsteeme ja interneti seadmeid.

Üldiselt sooritatakse PowerShellis administreerivaid ülesandeid cmdlets-e kasutades, mis on spetsiaalsed .NET klasside spetsiifilised operatsioonid. cmdlets-e saab omavahel kombineerida moodustades skripte, eraldiseisvaid programme või luues tavalisi .NET klasse. Need töötavad pääsedes ligi andmetele erinevates andmekogudes nagu näiteks failisüsteemid ja registrid, mis on kättesaadavad PowerShellile läbi Windows PowerShelli teenusepakkujatele.

Windows PowerShell pakub majutust API-le, millega Windows PowerShelli saab manustada teistesse programmidesse. Need programmid saavad sellisel juhul kasutada Windows PowerShelli funktsionaalsust, et rakendada kindlaid operatsioone; nende hulka kuuluvad ka sellised programmid mida, muidu juhitakse graafilise liidese abil. Seda võimalust on kasutatud Microsoft Exchange Server 2007-e poolt, et võimaldada oma juhtimisfunktsioone kirjutada PowerShell cdmlet-idena. Teised Microsofti rakendused, näiteks Microsoft SQL Server 2008, võimaldavad samuti ära kasutad PowerSHell cmdlets-e.

Windows PowerShell sisaldab oma mahukat konoolipõhist spikkrit, mis sarnaneb man pagesiga Unixi shellis. Sellele pääseb ligi cmdletiga Get-Help ning seda saab uuendada värske sisuga kasutades cmdletti Update-Help.

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 (batch failid), 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 keerulise skripte. Windows Server 2003-s olukord paranes, aga skriptimisvõimalusi peeti ikkagi mitterahuldavateks.

Microsoft üritas neid puudujääke parandada tutvustades Windows Script Hosti 1998. aastal 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 API-sid COM abil. Kuid ka sellel on omad puudused: see pole integreeritud shelli, selle dokumentatsioon pole kergesti kättesaadav ja see sai ruttu endale maine kui süsteemi nõrk lüli pärast seda, kui mitu prominentset arvutiviirust kasutasid ära selle turvaauke. Erinevad Windowsi versioonid pakkusid mitmesuguseid spetsiaalotstarbelisi 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 uuest küljest, luues shelli nimega Monad (samuti tuntud kui Microsoft Shell või MSH). Shell ja selle ideed avaldati augustis 2002 valgel paberil pealkirjaga Monad Manifesto. Monad oli uus laiendatav shell värske disainiga, mis oli võimeline automatiseerima suure hulga administratiivseid ülesandeid. Microsoft esmaesitles Monadit Professional Development Conference'il Los Angeleses 2003. aasta septembris. 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 kuulutas Microsoft ametlikult välja, et Monad nimetati ümber Windows PowerShelliks, asetades 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 20. 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-esse 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 olid allalaetavatena saadaval 32-bitistele ja 64-bitistele platvormidele.

Ülevaade

Windows PowerShell on võimeline teostama nelja tüüpi käske:

  • cmdlets, need on .NET programmid, mis disainiti PowerShelliga suhtlema
  • PowerShelli skriptid (failid laiendiga .ps1)
  • PowerShelli funktsioonid
  • eladiseisvad programmid (programmid laiendiga .exe)

Kui käsk on eraldiseisev programm, siis PowerSHell.exe käivitab selle eraldi prosessis; kui see on cmdlet, siis see käivitatakse PowerShelli protsessis. PowerShell pakub interaktiivset käsurea liidest, millesse saab sisestada käske ja kus kuvatakse nende väljund. Kasutajaliides, mis baseerub Win32 konsoolil, võimaldab käsu automaatset lõpunitrükkimist TAB klahvi abil, kuid ei võimalda süntaksi markeeringut. PowerShell võimaldab luua cmdlet-idele aliase loomist, mida PowerShell ise tõlgib orginaalkäskude väljakutseteks. PowerShell toetab nii nimelisi kui ka parameetrilisi käske. cmdlet-i täites seob argumendi väärtuse parameetriga PowerShell ise, aga välistes eraldiseisvates rakendustes teeb seda rakendus ise ja PowerShell ei sekku.

PowerShell kasutab toru konseptsiooni. Nagu ka Unixi toru puhul, kasutatakse PowerShelli torusid, et koostada komplekseid käske, lubades ühe käsu väljundit sisestada teise käsu sisendina kasutades | operaatorit. Aga erinevalt Unixi vastest on PowerShelli torus objektid. Andmed, mida vahetatakse käskude vahel on täielikult väljatrükitavad objektid, mitte sümbolitevood. Kui andmed viiakse torru objektidena, siis elemendid mida kapseldatakse säilitavad oma struktuuri ka tüübid cmdlets-i üleselt, vajaduseta voolu töödelda, mis oleks vajalik sümbolitevoo puhul. Objekti saab kapseldada ka kindlaid funktsioone, mis töötavad kindlate andmete puhul. Viimase cmdlet'ina torus on automaatselt PowerShelli poolt torru lükatud Out-Default cmdlet, mis muudab objekti formaadiobjektide vooks, mida saab ekraanile kuvada.

Kuna kõik PowerShelli objektid on .NET objektid, siis nad jagavad .ToString() meetodit, mis otsib välja objektis olevad andmed tekstiesitlusena. Windows PowerShell kasutab seda meetodit, et konverteerida objekt tekstiks. Lisaks lubab see ette määrata vormindamise seadeid, et objektide esitlemine tekstina kohandatakse vastavalt sellele milliseid andmeelemente soovitakse kuvada ja kuidas. Kui välist rakendust kasutatakse torus, siis see otsib välja objektis oleva tekstivoo, mitte ei integreeri otse PowerShelli tüübi süsteemiga. Seda seetõttu, et säilitada tagasiühilduvus.