Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused

Ajalooliselt on kĂ€suviipade tööriistad Unix-sĂŒsteemides paremad kui Windowsis, kuid uue lahenduse tulekuga on olukord muutunud.

Windows PowerShell vĂ”imaldab sĂŒsteemiadministraatoritel automatiseerida enamikku rutiinseid ĂŒlesandeid. Selle abil saab muuta seadeid, peatada ja kĂ€ivitada teenuseid ning hooldada enamikku installitud rakendustest. Sinist akent ei tasu pidada lihtsalt veel ĂŒheks kĂ€surea tĂ”lgiks; selline lĂ€henemine ei peegelda Microsofti pakutud uuenduste olemust. Tegelikult on Windows PowerShelli vĂ”imalused palju laiemad: proovime lĂŒhiartiklite tsĂŒklis vĂ€lja selgitada, kuidas Microsofti lahendus erineb meile tuttavamate vahendite seas.

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused

PÔhiomadused 

Loomulikult on Windows PowerShell eelkĂ”ige kĂ€surea keskkond koos skriptimise keele toetusega, mis loodi esialgu .NET Frameworki platvormi pĂ”hjal ja hiljem .NET Core'i peal. Erinevalt tĂŒhiandmeid vastu vĂ”tvatest ja tagastavatest keskkondadest töötab Windows PowerShell .NET klassidega, millel on omadused ja meetodid. PowerShell vĂ”imaldab teostada tavalisi kĂ€ske ning annab juurdepÀÀsu COM, WMI ja ADSI objektidele. Kasutatakse erinevaid talletusi, nagu failisĂŒsteem vĂ”i Windowsi register, millele on loodud nn pakkujad (providers). Tuleb mĂ€rkida, et PowerShelli tĂ€idetavaid komponente on vĂ”imalik integreerida teiste rakendustega, et teostada erinevaid toiminguid, sealhulgas graafilise liidese kaudu. Kuid tĂ”si on ka see, et paljud Windowsi rakendused pakuvad juurdepÀÀsu oma haldamise liidesele lĂ€bi PowerShelli. 

Windows PowerShell vÔimaldab:

  • Muuta operatsioonisĂŒsteemi seadeid;
  • Hallata teenuseid ja protsesse;
  • seadistada serveri rolle ja komponente;
  • Paigaldada tarkvara;
  • Hallata installitud tarkvara spetsiaalsete liideste kaudu;
  • Integreerida tĂ€idetavaid komponente kolmandate osapoolte programmidesse;
  • Luua skripte haldusĂŒlesannete automatiseerimiseks;
  • Töötada failisĂŒsteemi, Windowsi registri, sertifikaadihalduri jms ĂŒle;

KĂ€suresse ja arenduskeskkonda

Windows PowerShell on eksisteerib kahes variatsioonis: lisaks kĂ€surea emulaatorile on olemas ka integreeritud skriptimiskeskkond (Integrated Scripting Environment — ISE). KĂ€surealiidesele pÀÀseb juurde, valides vastava otsetee Windowsi menĂŒĂŒst vĂ”i kĂ€ivitades powershell.exe menĂŒĂŒst 'KĂ€ita'. Ekraanil ilmub sinine aken, mis erineb oluliselt vanast cmd.exe-st. Seal on automaatne tĂ€iendamine ja muid funktsioone, mida Unix-sĂŒsteemide kĂ€sureade kasutajad tunnevad hĂ€sti.

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused

KÀskluskeskkonnas töötamiseks tuleb meelde jÀtta mÔned otseteed:

  • Üles- ja allanuppu nĂ€itavad ajalugu, et korrata varem sisestatud kĂ€ske;
  • Parem nooleklahv reaas lĂ”pus sisestab eelmise kĂ€su sĂŒmbolhaaval;
  • Ctrl+Home kustutab sisestatud teksti kursorist rea alguseni;
  • Ctrl+End kustutab teksti kursori kuni rea lĂ”puni.

F7 nĂ€itab akent sisestatud kĂ€skudega ja vĂ”imaldab valida ĂŒhe neist. KĂ€sureas töötab samuti hiirega teksti valimine, kopeerimine ja kleepimine, kursori paigutamine, kustutamine, backspace — kĂ”ik nagu me armastame.

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
Windows PowerShell ISE on tĂ€islahendusega arenduskeskkond, millel on vahekaarditoe ja sĂŒntaksi esiletĂ”stmisega koodiredaktor, kĂ€skude koostaja, sisseehitatud silur ja muud programmeerijate rÔÔmud. Kui kirjutate arenduskeskkonna redigeerijas kĂ€su nime jĂ€rel sidekriipsu, saate rippmenĂŒĂŒs kĂ”ik saadaolevad parameetrid koos tĂŒĂŒbivihjetega. PowerShell ISE-i saab kĂ€ivitada kas sĂŒsteemi menĂŒĂŒst otsetee kaudu vĂ”i exĂ©cutables failiga powershell_ise.exe.

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused

KÀsklused 

Windows PowerShellis on ilmunud nn kĂ€sklused (cmdlets). Need on spetsialiseeritud .NET klassid, millel on mitmekesine funktsionaalsus. Neid nimetatakse 'Tegevus-Objekt' (vĂ”i 'Verb-Noun', kui teile see rohkem meeldib), ja poolitatud sidekriipsuga seos meenutab predikaati ja subjektit looduslike keelte lausetes. NĂ€iteks Get-Help tĂ€hendab sĂ”na-sĂ”nalt 'Get-Help' vĂ”i PowerShelli kontekstis: 'NĂ€ita-Abi'. Sisuliselt on see analoog Unix-sĂŒsteemide kĂ€sule man, ja PowerShellis tuleb manuaale kĂŒsida just nii, mitte kutsudes kĂ€sklusi koos vĂ”tmega —help vĂ”i /?. Ärge unustage ka PowerShelli veebidokumendide pĂ”hjalikkust, Microsoftil on need piisavalt detailsed.

Lisaks Get-le kasutatakse kÀskude tÀhendamiseks ka teisi tegusÔnu (ja mitte ainult tegusÔnu, rangelt vÔttes). Allpool toome mÔned nÀited:

Lisa — lisa;
Kustuta — puhasta;
Enable — lĂŒlita sisse;
Keela — lĂŒlita vĂ€lja;
Uus — loo;
Eemalda — eemalda;
Seada — mÀÀra;
Alusta — kĂ€ivita;
Peata — peata;
Export — ekspordi;
Importida — impordi.

On olemas sĂŒsteemi-, kasutaja- ja valikulised kĂ€skud, mille tĂ€itmise tulemusena tagastatakse alati objekt vĂ”i objektide massiiv. Nad ei ole suurustundlikud, st tĂ”lgendaja jaoks ei ole tellimuste vahel vahet Get-Help ja get-help. Eraldamiseks kasutatakse sĂŒmbolit ‘;’, kuid seda tuleb kasutada ainult siis, kui ĂŒhel real tĂ€idetakse mitu kĂ€sku. 

Windows PowerShelli kÀsud kogunevad mooduliteks (NetTCPIP, Hyper-V jne) ning objekti ja tegevuse otsimiseks on olemas kÀsk Get-Command. Selle kohta juhendi kuvamiseks saab teha jÀrgmist:

Get-Help Get-Command

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused

Vaikimisi kuvab kĂ€sk lĂŒhijuhendi, kuid kĂ€skudele saab vajadusel edastada parameetreid (argumente). Nende abil saab, nĂ€iteks, saada ĂŒksikasjalikku (parameeter -Detailed) vĂ”i tĂ€ielikku (parameeter -Full) juhendit ning kuvada ekraanile nĂ€iteid (parameeter -Examples):

Get-Help Get-Command -Examples

Windows PowerShelli juhendit uuendatakse kĂ€suga Update-Help. Kui kĂ€sk muutub liiga pikaks, saab kĂ€su argumendid viia jĂ€rgmisele reale, kirjutades erisĂŒmboli ‘`’ ja vajutades Enter — lihtsalt lĂ”petada kĂ€sku ĂŒhe real ja jĂ€tkata teisel ei Ă”nnestu.

Allpool toome mÔned levinud kÀskude nÀited: 

Get-Process — kuva sĂŒsteemis kĂ€ivitatud protsessid;
Get-Service — kuva teenused ja nende seisund;
Get-Content — kuvada faili sisu.

Tihti kasutatavate kĂ€skude ja vĂ€liste utiliitide jaoks on Windows PowerShellis lĂŒhikesed sĂŒnonĂŒĂŒmid — aliasd (ingl. k. Alias). NĂ€iteks, dir — alias Get-ChildItem. SĂŒnonĂŒĂŒmide hulgas on ka Unix-sĂŒsteemide kĂ€sud (ls, ps jne), ja kĂ€sku Get-Help kutsutakse vĂ€lja kĂ€suga help. TĂ€ieliku sĂŒnonĂŒĂŒmide nimekirja saab vaadata kĂ€suga Get-Alias:

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused

Skripti, funktsiooni, mooduli ja PowerShelli keel

Windows PowerShell skriptid salvestatakse tavalistes tekstifailides laiendiga .ps1. Neid ei saa kaheastmeliselt avada: konteksti menĂŒĂŒ avamiseks tuleb hiire parema nupuga klĂ”psata ja valida „KĂ€ivita PowerShellis“. Konsoolis tuleb kas nĂ€idata skripti tĂ€israda vĂ”i minna vastavasse katalooge ja kirjutada faili nimi. Skriptide kĂ€ivitamine on samuti piiratud sĂŒsteemipoliitika poolt ning praeguseid seadeid saab kontrollida Get-ExecutionPolicy kĂ€su abil, mis annab ĂŒhe jĂ€rgmistest vÀÀrtustest:

Restricted — skriptide kĂ€ivitamine on keelatud (vaikimisi);
AllSigned — lubatud on ainult usaldusvÀÀrse arendaja allkirjastatud skriptide kĂ€ivitamine;
RemoteSigned — lubatud on allkirjastatud ja kohalike skriptide kĂ€ivitamine;
Unrestricted — lubatud on igasuguste skriptide kĂ€ivitamine.

Administraatoril on kaks vĂ”imalust. Ohutum variant eeldab skriptide allkirjastamist, kuid see on ĂŒsna tĂ”sine trikk — seda arutame jĂ€rgmistes artiklites. Praegu liigume lihtsama vastuseisu teed ja muudame poliitikat:

Set-ExecutionPolicy RemoteSigned

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
PowerShell tuleb selleks kÀivitada administraatorina, kuigi spetsiaalse parameetri abil on vÔimalik poliitikat muuta ka praeguse kasutaja jaoks.

Skriptid kirjutatakse objektorienteeritud programmeerimiskeeles, mille kĂ€sud on nimetatud samamoodi nagu varem kĂ€sitletud kĂ€sklused: „Tegevus-Objekt“ („Verb-Noun“). Selle pĂ”hiĂŒlesanne on haldustegevuste automatiseerimine, kuid see on tĂ€ieĂ”iguslik tĂ”lgitav keel, milles on kĂ”ik vajalikud konstruktsioonid: tingimuslikud ĂŒleminekud, tsĂŒklid, muutujad, massiivid, objektid, veahaldus jne. Skriptide kirjutamiseks sobib iga tekstiredaktor, kuid kĂ”ige mugavam on kĂ€ivitada Windows PowerShell ISE.

Skripti saab edastada parameetreid, muuta need kohustuslikuks ja mÀÀrata vaikevÀÀrtusi. Lisaks vÔimaldab Windows PowerShell luua funktsioone ja neid kutsuda tÀpselt nagu kÀske: selleks kasutatakse konstruktsiooni Function ja kaarekujulisi sulgusid. Skript, mis sisaldab funktsioone, nimetatakse mooduliks ja sellel on laiend .psm1. Moodulid peavad olema salvestatud kataloogidesse, mis on mÀÀratletud PowerShelli keskkonna muutujates. Nende vaatamiseks saab kasutada jÀrgmist kÀsku:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Konveierid

Viimases nĂ€ites kasutasime Unix-sĂŒsteemide kasutajatele tuttavat konstruktsiooni. Windows PowerShellis vĂ”imaldab vertikaalne toru samuti ĂŒhe kĂ€su vĂ€ljundi edastamist teise kĂ€su sisendisse, kuid konveieri rakenduses on ka oluline erinevus: tegemist on juba mitte tĂ€hemĂ€rkide kogumi vĂ”i mingi tekstiga. Sisseehitatud cmdlet'id vĂ”i kasutaja funktsioonid tagastavad objekte vĂ”i objektide massiive ning vĂ”ivad neid ka sisendina vastu vĂ”tta. Nagu Bourne shellis ja selle paljudes jĂ€rgijates, lihtsustab PowerShell konveieri abil keerukate ĂŒlesannete tĂ€itmist.

Lihtsaim konveieri nÀide on jÀrgmine:

Get-Service | Sort-Object -property Status

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
Esmalt tĂ€idetakse cmdlet Get-Service ja seejĂ€rel edastatakse kĂ”ik saadud teenused sorteerimisele cmdlet'ile Sort-Object vastavalt omadusele Status. See, millises argumendis edastatakse eelmise konveieri lĂ”igu tulemused, sĂ”ltub selle tĂŒĂŒbist — tavaliselt on see InputObject. TĂ€iendavat teavet kĂ€sitletakse PowerShelli programmeerimiskeele kohta eraldi artiklis. 

Kui soovite, vĂ”ib ahelat jĂ€tkata ja edastada Sort-Object'i töö tulemuse veel ĂŒhele cmdlet'ile (need tĂ€idetakse vasakult paremale). Muide, Windowsi kasutajatele on juurdepÀÀsetav ka tuttav Unix'i konstruktsioon lehekĂŒljelise vĂ€ljundi jaoks: 

Get-Service | Sort-Object -property Status | more

TaustĂŒlesannete kĂ€ivitamine 

Sageli on vajalik kÀivitada mingi kÀsk taustal, et mitte oodata selle tÀitmise tulemust shelli seansis. Windows PowerShellis on sellisel juhul mitu cmdlet'i:

Start-Job — taustĂŒlesande kĂ€ivitamine;
Stop-Job — taustĂŒlesande peatamine;
Get-Job — taustĂŒlesannete nimekirja vaatamine;
Receive-Job — taustĂŒlesande tĂ€itmise tulemuse vaatamine;
Remove-Job — taustĂŒlesande eemaldamine;
Wait-Job — taustĂŒlesande viimine tagasi konsooli.

TaustĂŒlesande kĂ€ivitamiseks kasutame cmdlet'i Start-Job ja sulgudes mÀÀrame kĂ€su vĂ”i kĂ€skude komplekti:

Start-Job {Get-Service}

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
Windows PowerShellis saab taustĂŒlesandeid hallata nende nimede kaudu. Alustuseks Ă”pime neid kuvama:

Get-Job

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
NĂŒĂŒd nĂ€itame ĂŒlesande Job1 tĂ€itmise tulemust:

Receive-Job Job1 | more

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
KĂ”ik on ĂŒsna lihtne.

KaugkÀskude tÀitmine

Windows PowerShell vÔimaldab kÀivitada kÀske ja skripte mitte ainult kohalikul, vaid ka kaugmasinal ja isegi terve grupi masinate puhul. Selleks on mitmeid viise:

  • Paljude cmdlet'ide puhul on parameeter -ComputerName, kuid sellise meetodi abil ei ole vĂ”imalik nĂ€iteks luua torujuhet;
  • Cmdlet Enter-PSSession lubab luua kaugmasinas interaktiivse seansi; 
  • Cmdleti abil Invoke-Command vĂ”ib kĂ€ivitada kĂ€sklusi vĂ”i skripte ĂŒhel vĂ”i mitmel kaugmasinal.

PowerShelli versioonid

Alates esimesest vĂ€ljalaskest aastal 2006 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 vĂ€ljalase 6.2 ilmus 10. jaanuaril 2018. Varasematele versioonidele kirjutatud skriptid töötavad suure tĂ”enĂ€osusega hilisemates versioonides, kuid tagasipöörderikkumisega vĂ”ivad esineda probleemid, kuna PowerShellis on aastate jooksul ilmunud suur hulk uusi cmdlet'e. Arvuti installitud kĂ€surealiidese versiooni saab teada, kasutades omadust PSVersion muutuja $PSVersionTable:

$PSVersionTable.PSVersion

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
Samuti vÔib kasutada cmdleti:

Get-Variable -Name PSVersionTable –ValueOnly

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused
Sama asja teeb ka cmdlet Get-Host. Tegelikult on vÔimalusi palju, kuid nende rakendamiseks tuleb Ôppida PowerShelli programmeerimiskeelt, millega me tegeleme jÀrgmisel artiklil. 

Summary 

Microsoftil Ă”nnestus luua tĂ”eliselt vĂ”imas kĂ€surealiides mugava integreeritud keskkonnaga skriptide arendamiseks. Erinevalt meie tuttavatest Unix'i tööriistadest eristab seda sĂŒgav integreeritus Windowsi operatsioonisĂŒsteemide, nende jaoks mĂ”eldud tarkvara ja .NET Core platvormiga. PowerShelli vĂ”ib nimetada objektorienteeritud liideseks, kuna cmdlet'id ja kasutaja funktsioonid tagastavad objekte vĂ”i objektide massi ja saavad neid sisendina. Arvame, et see tööriist peaks olema iga Windowsi serverihalduri valduses: aeg on möödas, kui nad said hakkama ilma kĂ€surida. Arenenud kĂ€surealiides on eriti vajalik meie odavatel VPS-del, mis töötavad Windows Server Core'i all, aga see on juba tĂ€iesti teine lugu.

Mis on Windows PowerShell ja millega seda sĂŒĂŒakse? Osa 1: peamised vĂ”imalused

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Milliseid teemasid tasub kindlasti jÀrgnevates artiklites kÀsitleda?

  • 53,2%PowerShelli programmeerimine

  • 42,4%PowerShelli funktsioonid ja moodulid

  • 22,1%Kuidas allkirjastada oma skripte?

  • 12,1%Töötlusandmete haldamine kaudu pakkujate (providers) abil

  • 57,6%Kaugtöötluse automatiseerimine PowerShelli abil

  • 30,7%Tarkvara haldamine ja PowerShelli tĂ€itmisĂŒlesannete integreerimine kolmandate osapoolte toodetesse

Kokku hÀÀletas 231 kasutajat. 37 kasutajat jÀi erakuks.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster