Ajalooliselt on Unix-sĂŒsteemide kĂ€surea tööriistad paremini arenenud kui Windowsis, kuid uue lahenduse ilmumisega on olukord muutunud.
Windows PowerShell vĂ”imaldab sĂŒsteemiadministraatoritel automatiseerida enamikku rutiinsetest ĂŒlesannetest. Selle abil saab muuta seadistusi, peatada ja kĂ€ivitada teenuseid ning teostada enamikule installitud rakendustele hooldust. Sinise akna kĂ€sitlemine lihtsalt kui veel ĂŒhte kĂ€surea tĂ”lkijat oleks vale. See lĂ€henemine ei kajasta Microsofti pakutud innovatsioonide olemust. Tegelikult on Windows PowerShelli vĂ”imalused palju laiemad: vĂ€ikese artiklite seeria kĂ€igus pĂŒĂŒame selgitada, milles Microsofti lahendus erineb meile tuttavatest vahenditest.
Peamised funktsioonidÂ
Muidugi on Windows PowerShell eelkĂ”ige kĂ€surea liides, mis pĂ”hineb skriptikeelel, algselt loodud .NET Frameworki platvormi pĂ”hjal ja hiljem .NET Core'il. Erinevalt tekstipĂ”histest liidestest, mis ainult vĂ”tavad ja tagastavad tekstilisi andmeid, töötab Windows PowerShell .NET klassidega, millel on omadused ja meetodid. PowerShell vĂ”imaldab kĂ€itada tavalisi kĂ€ske ning annab juurdepÀÀsu COM, WMI ja ADSI objektidele. Kasutatakse erinevaid talletusi, nagu failisĂŒsteem vĂ”i Windowsi registri, millele ligipÀÀsuks on loodud nn pakkujad (providers). Oluline on ka see, et PowerShelli kĂ€ivitatavaid komponente saab sisse sööta teistesse rakendustesse erinevate toimingute teostamiseks, sealhulgas graafilise liidese kaudu. Samuti on vastupidine tĂ”ene: paljud Windowsi rakendused pakuvad juurdepÀÀsu oma haldusliidesele lĂ€bi PowerShelli.Â
Windows PowerShell vÔimaldab:
- Muuta operatsioonisĂŒsteemi seadeid;
- Hallata teenuseid ja protsesse;
- Seada ĂŒles serveri rolle ja komponente;
- Installida tarkvara;
- Hallata installitud tarkvara lÀbi spetsiaalsete liideste;
- Sisse sĂŒĂŒa kĂ€ivitatavaid komponente kolmandate osapoolte programmidesse;
- Loo skripte haldusĂŒlesannete automatiseerimiseks;
- Töötage failisĂŒsteemi, Windowsi registri, sertifikaadihoidla jne. ka.
Kest ja arenduskeskkond
Windows PowerShelli on kahes vormis: lisaks kĂ€surea konsoli emuleerimisele on olemas integreeritud skriptikeskkond (Integrated Scripting Environment â ISE). KĂ€surealiidesele pÀÀsemiseks valige lihtsalt vastav otsetee Windowsi menĂŒĂŒst vĂ”i kĂ€ivitage powershell.exe menĂŒĂŒst "KĂ€ita". Ekraanile ilmub sinine aken, mis erineb oluliselt aegunud cmd.exe-st. Seal on automaatne tĂ€iendamine ja muid funktsioone, mis on tuttavad Unix-sĂŒsteemide kĂ€surealiidese kasutajatele.

KĂ€skude reĆŸiimis töötamiseks tuleb meeles pidada mĂ”ningaid klahvikombinatsioone:
- Ăles- ja allanooled kerivad ajalugu, et korrata varem sisestatud kĂ€ske;
- Parempoolne nooleklahv reavahetuse korral sisestab eelmise kÀsu tÀhemuse kaupa;
- Ctrl+Home kustutab sisestatud teksti kursoripositsioonist rea alguseni;
- Ctrl+End kustutab teksti kursorist rea lÔpuni.
F7 avab akna, kus on sisestatud kĂ€sud, ja vĂ”imaldab valida ĂŒhe neist. Konsoolis töötab ka hiirega teksti valimine, kopeerimine ja kleepimine, kursori paigutamine, kustutamine, backspace â kĂ”ik nagu me armastame.

Windows PowerShell ISE on tĂ€isfunktsionaalne arenduskeskkond, millel on vahelehtede ja sĂŒntaksi esiletĂ”stmisega koodiredaktor, kĂ€skude koostaja, sisseehitatud silur ja muud arendajate rÔÔmud. Kui arenduskeskkonna redigeerijas kĂ€su nime jĂ€rel kirjutada mĂŒĂŒgiĂŒhend, kuvatakse rippmenĂŒĂŒs kĂ”ik saadaval olevad parameetrid, sealhulgas tĂŒĂŒp. PowerShell ISE kĂ€ivitamiseks vĂ”ib kasutada kas otseteed sĂŒsteemimenĂŒĂŒst vĂ”i kĂ€ivitamisfaili powershell_ise.exe.

CmdletsÂ
Windows PowerShellis on tekkinud nn. cmdletid (komandletid). Need on spetsiifilised .NET klassid, mis sisaldavad mitmekesist funktsionaalsust. Need nimed pĂ”hinevad pĂ”himĂ”ttel âTegevus-Objektâ (vĂ”i âVerb-Nomenâ, kui see teile rohkem meeldib), ja sidekriipsuga eraldatud seos meenutab looduskeelte lauses öeldise ja subjektiga suhet. NĂ€iteks Get-Help tĂ€hendab otseselt âSaada-Aidâ vĂ”i PowerShelli kontekstis: âKuva-Abi.â Tegelikult on see Unix-sĂŒsteemide man kĂ€su analoog, ja PowerShelli manuaale tuleb kĂŒsida just nii, mitte kutsudes cmdlet'e vĂ€lja vĂ”tmisega âhelp vĂ”i /?.. Ăra unusta ka PowerShelli online-dokumentatsiooni: Microsoftilt on see piisavalt pĂ”hjalik.
Lisaks Get-le kasutatakse cmdlet'ides tegevuste tÀhistamiseks ka teisi tegusÔnu (ja mitte ainult tegusÔnu, rangelt öeldes). AlljÀrgnevas loendis toome mÔned nÀited:
Lisa â lisada;
Puhasta â puhastada;
Enable â sisse lĂŒlitada;
Disable â vĂ€lja lĂŒlitada;
Uus â luua;
Remove â kustutada;
Set â mÀÀrata;
Alusta â kĂ€ivitada;
Stop â peatada;
Export â eksportida;
Import â importida.
On sĂŒsteemsed, kasutaja- ja valikulised komandletid: nende tĂ€itmise tulemusena tagastatakse objekt vĂ”i objektide massiiv. Need ei ole registreerimise osas tundlikud, st tĂ”lgendaja jaoks pole kĂ€skude, nagu Get-Help ja get-help, vahel erinevust. Eraldamiseks kasutatakse sĂŒmbolit ';', kuid seda tuleb kasutada ainult siis, kui ĂŒhel real tĂ€idetakse mitu komandleti.Â
Windows PowerShelli komandletid rĂŒhmitatakse moodulitesse (NetTCPIP, Hyper-V jne), ning objekti ja toimingu otsimiseks on olemas komandlet Get-Command. Temaga seotud abi nĂ€itamiseks saab kasutada jĂ€rgmist:
Get-Help Get-Command 
Vaikimisi kuvab kĂ€sk lĂŒhikese abi, kuid komandletidele vĂ”ib vajadusel edastada parameetreid (argumendid). Nende abil on vĂ”imalik nĂ€iteks saada detailsed andmed (parameeter -Detailed) vĂ”i tĂ€isteave (parameeter -Full), samuti kuvada ekraanile nĂ€ited (parameeter -Examples):
Get-Help Get-Command -ExamplesWindows PowerShelli abikiri uuendatakse komandiga Update-Help. Kui komandirida on liiga pikk, saab komandiga seotud argumendid viia jĂ€rgmiseks reale, kirjutades teenusesĂŒmboli â`â ja vajutades Enter â lihtsalt ei saa lĂ”petada kĂ€su kirjutamist ĂŒhel real ja jĂ€tkata teisel.
Siin on mĂ”ned levinud komandikoodide nĂ€ited:Â
Get-Process â nĂ€itab sĂŒsteemis kĂ€ivitunud protsesse;
Get-Service â nĂ€itab teenuseid ja nende staatust;
Get-Content â vĂ€ljastab faili sisu.
Windows PowerShellis on sageli kasutatavate komandikoodide ja vĂ€liste tööriistade jaoks lĂŒhike sĂŒnonĂŒĂŒmide â aliasid. NĂ€iteks on dir alias Get-ChildItem. Aliaside nimekirjas on ka Unix-sĂŒsteemide kĂ€skude analoogid (ls, ps jne), samas kui komand Get-Help kutsutakse vĂ€lja kĂ€su help abil. TĂ€ieliku sĂŒnonĂŒĂŒmide loetelu saab vaadata komandiga Get-Alias:

Skripti, funktsioonide, moodulite ja PowerShelli keel
Windows PowerShelli skriptid salvestatakse lihttekstifailidena, millel on laiend .ps1. Neid ei saa kĂ€ivitada kahekordse klĂ”psuga: kontekstimenĂŒĂŒ avamiseks on vaja hiire paremat nuppu ja valida punkt âKĂ€ivita PowerShellisâ. Konsoolis on kas vaja nĂ€idata skripti tĂ€pset teed vĂ”i minna vasta katalooge ja kirjutada faili nimi. Skriptide kĂ€ivitamine on ka piiratud sĂŒsteemipoliitikaga, ja praeguste seadistuste kontrollimiseks saab kasutada kĂ€sku Get-ExecutionPolicy, mis tagastab ĂŒhe jĂ€rgmistest vÀÀrtustest:
Restricted â skriptide kĂ€ivitamine on keelatud (vaikimisi);
AllSigned â lubatud on ainult allkirjastatud skriptide kĂ€ivitamine, mis on usaldusvÀÀrse arendaja poolt;
RemoteSigned â lubatud on allkirjastatud ja isiklikud skriptid;
Unrestricted â lubatud on kĂ”igi skriptide kĂ€ivitamine.
Administraatoril on kaks tegevusvĂ”imalust. KĂ”ige turvalisem on skriptide allkirjastamine, kuid see on ĂŒsna tĂ”sine nĂ”iutsemine â sellega tegeleme jĂ€rgmistes artiklites. Praegu valime vĂ€ikseima vastupanu tee ja muutame poliitikat:
Set-ExecutionPolicy RemoteSigned 
PowerShell'i kasutamiseks tuleb see kÀivitada administraatori Ôigustes, kuigi spetsiaalse parameetri abil on vÔimalik poliitikat muuta ka praeguse kasutaja jaoks.
Skripte kirjutatakse objekti-orienteeritud programmeerimiskeeles, mille kĂ€sklused nimetatakse samadele pĂ”himĂ”tetele, nagu varasemalt kĂ€sitletud kĂ€sud: âTegevus-Objektâ (âVerb-Nimiâ). Selle peamine eesmĂ€rk on automatiseerida haldustöid, kuid see on tĂ€isvÀÀrtuslik tĂ”lgitav keel, kus on kĂ”ik vajalikud konstruktsioonid: tingimuslikud ĂŒleminekud, tsĂŒklid, muutujad, massiivid, objektid, vigade töötlemine jne. Skriptide kirjutamiseks on sobilik iga tekstiredaktor, kuid mugavam on kasutada Windows PowerShell ISE.
Skripti saab edastada parameetreid, mÀÀrata need kohustuslikeks ning seada vaikevÀÀrtusi. Lisaks vÔimaldab Windows PowerShell luua funktsioone ja kutsub neid samamoodi nagu komandlet'e: selleks kasutatakse struktuuri Function ja sulgusid. Funktsioonidega skripti nimetatakse mooduliks ja sellel on laiend .psm1. Moodulid peavad olema salvestatud PowerShelli keskkonnamuutujates mÀÀratletud kataloogides. Neid saab vaadata jÀrgmise kÀskluse abil:
Get-ChildItem Env:PSModulePath | Format-Table -AutoSizeTorud
Viimases nĂ€ites kasutasime Unix-sĂŒsteemide kasutajatele tuttavat struktuuri. Windows PowerShellis vĂ”imaldab vertikaalne joon ka edastada ĂŒhe kĂ€su vĂ€ljundi teise kĂ€su sisendisse, kuid toru rakenduses on oluliselt erinevusi: siin ei rÀÀgita enam sĂŒmbolite kogumist vĂ”i tekstist. Sisseehitatud komandletid vĂ”i kasutaja loodud funktsioonid tagastavad objekte vĂ”i objektide massiive, samuti saavad nad neid sisendiks. Nagu Bourne shellis ja selle paljudes jĂ€rgijates, lihtsustab PowerShell toru abil keeruliste ĂŒlesannete tĂ€itmist.
Lihtsaim toru nÀeb vÀlja selline:
Get-Service | Sort-Object -property Status 
Esmaltakse Get-Service ja seejĂ€rel suunatakse kĂ”ik saadud teenused Sort-Objecti, et need jĂ€rjestada Status atribuudi jĂ€rgi. Kuidas tĂ€pselt eelmise toruosa tulemus tuleb, sĂ”ltub selle tĂŒĂŒbist â tavaliselt on see InputObject. Selle kohta rÀÀgitakse lĂ€hemalt PowerShelli programmeerimiskeelt kĂ€sitlevas artiklis.Â
Soovi korral saab ahelat jĂ€tkata ja edastada Sort-Objecti tulemuse veel ĂŒhele cmdlet'ile (need tĂ€idetakse vasakult paremale). Muide, Windowsi kasutajatele on olemas tuttav UNIX-i stiilis konstruktsioon lehekĂŒljepĂ”hiseks vĂ€ljundiks:Â
Get-Service | Sort-Object -property Status | moreTaustal töötavate ĂŒlesannete kĂ€ivitamineÂ
Sageli on vajalik kÀivitada mÔni kÀsk taustal, et mitte oodata selle tÀitmise tulemust kÀsureas. Windows PowerShellis on selle jaoks mitu cmdlet'i:
Start-Job â tausttöö kĂ€ivitamine;
Stop-Job â tausttöö peatamine;
Get-Job â tausttööde loendi vaatamine;
Receive-Job â tausttöö tĂ€itmisresultaatide vaatamine;
Remove-Job â tausttöö eemaldamine;
Wait-Job â taustaprotsessi edasiviimine tagasi konsoolile.
Taustaprotsessi kÀivitamiseks kasutame kÀsku Start-Job ja kindlate sulgude sees mÀÀrame kÀsu vÔi kÀsude kogumi:
Start-Job {Get-Service} 
Windows PowerShellis saab taustaprotsessidega manipuleerida, teades nende nimesid. Alustame nende kuvamisega:
Get-Job 
NĂŒĂŒd kuvame ĂŒlesande Job1 tulemuse:
Receive-Job Job1 | more 
KĂ”ik on ĂŒsna lihtne.
KaugkÀskude tÀitmine
Windows PowerShell vÔimaldab kÀskude ja skriptide tÀitmist mitte ainult lokaalselt, vaid ka eemaloleval arvutil vÔi isegi terve hulga masinate peal. Selleks on mitu viisi:
- Paljudel kÀskudel on parameeter
-ComputerName, kuid sel viisil ei Ônnestu nÀiteks luua toru; - KÀsk
Enter-PSSessionlubab luua kaugmasinas interaktiivse sessiooni;Â - KĂ€sk
Invoke-CommandvĂ”imaldab tĂ€ita kĂ€ske vĂ”i skripte ĂŒhel vĂ”i mitmel eemaloleval arvutil.
PowerShelli versioonid
Alates oma esimesest vĂ€ljatoomisest 2006. aastal on PowerShell tĂ”siselt muutunud. Tööriist on saadaval paljudele sĂŒsteemidele, mis töötavad erinevatel riistvaraplatvormidel (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux ja OS X. Viimane versioon 6.2 ilmus 10. jaanuaril 2018. A varem kirjutatud skriptid töötavad suure tĂ”enĂ€osusega hilisemates versioonides, kuid tagurpidi ĂŒleminekul vĂ”ivad esineda probleemid, kuna PowerShellis on aastate jooksul lisandunud palju uusi kĂ€sklusi. Ăhendatud arvuti kĂ€surea versiooni kindlaksmÀÀramiseks saab kasutada vara PSVersion, mis on integreeritud muutujas $PSVersionTable:
$PSVersionTable.PSVersion 
Samuti saab kasutada kÀsklust:
Get-Variable -Name PSVersionTable âValueOnly 
Seda saab teha ka kĂ€sklusega Get-Host. Tegelikult on variante palju, kuid nende rakendamiseks tuleb Ă”ppida PowerShelli programmeerimiskeelt, millega me tegeleme .Â
KokkuvĂ”teÂ
Microsofti korporatsioon suutis luua tĂ”eliselt vĂ”imsa kĂ€surea keskkonna, millel on mugav integreeritud skriptimise arenduskeskkond. Erinevalt tuntud Unix'i tööriistadest on sellel sĂŒgav integratsioon Windows'i operatsioonisĂŒsteemide, nende jaoks loodud tarkvara ja .NET Core platvormiga. PowerShelli vĂ”ib nimetada objektorienteeritud kĂ€surea keskkonnaks, kuna komandletid ja kasutaja funktsioonid tagastavad objekte vĂ”i objektide massiive ja vĂ”ivad neid ka sisendina vastu vĂ”tta. Usume, et kĂ”ik Windows'i serveri administraatorid peaksid seda tööriista valdama: on möödunud aeg, mil nad said ilma kĂ€sureata hakkama. TĂ€iustatud kĂ€surea keskkond on eriti vajalik , kuid see on juba hoopis teine ââlugu.
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Milliseid teemasid tuleks jĂ€rgmistel tsĂŒkli artikkeltesse esmalt kĂ€sitleda?
53,2%PowerShelli programmeerimine
42,4%PowerShelli funktsioonid ja moodulid
22,1%Kuidas signida oma skripte?
12,1%Töötlusandmete haldamine lÀbi pakkujate (providers)
57,6%Arvutihalduse automatiseerimine PowerShelli abil
30,7%Tarkvara haldamine ja PowerShelli tÀitmiskomponentide integreerimine kolmandate osapoolte toodetesse71
HÀÀletas 231 kasutajat. 37 kasutajat jÀid erapooletuks.
Allikas: habr.com
