Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid

Ajalooliselt on Unixi süsteemide käsurea utiliidid paremini arenenud kui Windowsis, kuid uue lahenduse tulekuga on olukord muutunud.

Windows PowerShell võimaldab süsteemiadministraatoritel automatiseerida enamikku rutiinseid toiminguid. Sellega saate muuta seadeid, peatada ja käivitada teenuseid ning teostada enamiku installitud rakenduste hooldust. Oleks vale tajuda sinist akent teise käsutõlgina. Selline lähenemine ei kajasta Microsofti pakutud uuenduste olemust. Tegelikult on Windows PowerShelli võimalused palju laiemad: lühikeses artiklite sarjas püüame välja mõelda, mille poolest Microsofti lahendus erineb meile tuttavatest tööriistadest.

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid

Peamised omadused 

Muidugi on Windows PowerShell peamiselt skriptimiskest, mis oli algselt ehitatud .NET Frameworkile ja hiljem .NET Core'ile. Erinevalt kestadest, mis aktsepteerivad ja tagastavad tekstiandmeid, töötab Windows PowerShell .NET-klassidega, millel on atribuudid ja meetodid. PowerShell võimaldab teil käivitada tavalisi käske ja annab juurdepääsu COM-, WMI- ja ADSI-objektidele. See kasutab erinevaid salvestusi, näiteks failisüsteemi või Windowsi registrit, millele ligipääsuks nö. pakkujad. Märkimist väärib võimalus põimida PowerShelli käivitatavaid komponente teistesse rakendustesse erinevate toimingute realiseerimiseks, sh. graafilise liidese kaudu. Tõsi on ka vastupidine: paljud Windowsi rakendused pakuvad juurdepääsu oma haldusliidestele PowerShelli kaudu. 

Windows PowerShell võimaldab teil:

  • Muutke operatsioonisüsteemi sätteid;
  • hallata teenuseid ja protsesse;
  • Konfigureerida serveri rolle ja komponente;
  • installida tarkvara;
  • Hallake installitud tarkvara spetsiaalsete liideste kaudu;
  • Manustage käivitatavad komponendid kolmandate osapoolte programmidesse;
  • Loo skripte haldusülesannete automatiseerimiseks;
  • Töötage failisüsteemi, Windowsi registri, sertifikaadihoidla jne abil.

Shell ja arenduskeskkond

Windows PowerShelli on kahel kujul: lisaks käsukestaga konsooliemulaatorile on olemas ka integreeritud skriptimiskeskkond (ISE). Käsurea liidese avamiseks valige lihtsalt Windowsi menüüst sobiv otsetee või käivitage Powershell.exe menüüst Run. Ekraanile ilmub sinine aken, mis erineb märgatavalt oma võimaluste poolest antidiluvian cmd.exe-st. Unixi süsteemide käsukestade kasutajatele on tuttav automaatne lõpetamine ja muud funktsioonid.

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid

Shelliga töötamiseks peate meeles pidama mõnda kiirklahve:

  • Üles- ja allanooled kerivad ajaloos, et korrata varem sisestatud käske;
  • Rea lõpus olev paremnool sisestab eelmise käsu tähemärgi haaval uuesti;
  • Ctrl+Home kustutab trükitud teksti kursori asukohast rea algusesse;
  • Ctrl+End kustutab teksti kursorist rea lõppu.

F7 näitab sisestatud käskudega akent ja võimaldab neist ühe valida. Konsool töötab ka hiirega tekstivalikuga, kopeeri-kleepimisega, kursori positsioneerimisega, kustutamisega, tagasilükkega – kõigega, mis meile meeldib.

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Windows PowerShell ISE on terviklik arenduskeskkond, millel on vahekaartide ja süntaksiga esiletõstetud koodiredaktor, käskude koostaja, sisseehitatud silur ja muud programmeerimisrõõmud. Kui kirjutate arenduskeskkonna redaktoris käsu nime järele sidekriipsu, kuvatakse ripploendis kõik saadaolevad valikud koos tüübi viitega. PowerShell ISE saate käivitada kas süsteemimenüü otsetee kaudu või käivitatava faili powershell_ise.exe abil.

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid

cmdletid 

Windows PowerShellis on nn. cmdletid. Need on spetsiaalsed .NET-klassid, mis pakuvad mitmesuguseid funktsioone. Nende nimeks on tegevus-objekt (või verb-nimisõna, kui soovite) ja sidekriipsuga eraldatud link sarnaneb loomuliku keele lausete predikaadi ja subjektiga. Näiteks Get-Help tähendab sõna-sõnalt "Hangi abi" või PowerShelli kontekstis: "Show-Help". Tegelikult on see Unixi süsteemides man-käsu analoog ja PowerShelli käsiraamatuid tuleb taotleda sel viisil, mitte kutsudes cmdletid klahviga --help või /?. Ärge unustage PowerShelli veebidokumentatsiooni: Microsoftil on see üsna üksikasjalik.

Lisaks Get-le kasutavad cmdletid toimingute tähistamiseks muid tegusõnu (ja mitte ainult tegusõnu, rangelt võttes). Allolevas loendis anname mõned näited:

Add - lisama;
Clear - selge;
Enable - sisse lülitada;
Disable - välja lülitama;
New - luua;
Remove - kustutada;
Set - küsida;
Start - jooksma;
Stop - peatus;
Export - eksport;
Import - importida.

Seal on süsteemi-, kasutaja- ja valikulised cmdlet-käsud: täitmise tulemusena tagastavad nad kõik objekti või objektide massiivi. Nad ei ole tõstutundlikud, st. käsutõlgi vaatenurgast ei ole Get-Help ja get-help vahel vahet. Eraldamiseks kasutatakse märki ';', kuid see on kohustuslik ainult siis, kui samal real käivitatakse mitu cmdlet-käsku. 

Windows PowerShelli cmdlet-käsud on rühmitatud moodulitesse (NetTCPIP, Hyper-V jne) ning objekti ja toimingu järgi otsimiseks on olemas käsk Get-Command. Saate kuvada abi järgmiselt:

Get-Help Get-Command

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid

Vaikimisi kuvab käsk lühiabi, kuid parameetrid (argumendid) edastatakse vajadusel cmdlet-käskudele. Nende abiga saate näiteks üksikasjalikku (parameeter -Detailed) või täielikku (parameeter -Full) abi, samuti saate kuvada näiteid (parameeter -Examples):

Get-Help Get-Command -Examples

Windows PowerShelli spikri värskendab cmdlet Update-Help. Kui käsurida osutub liiga pikaks, saab cmdleti argumendid järgmisele nihutada, kirjutades teenuse märgi ``' ja vajutades sisestusklahvi – lihtsalt käsu ühele reale kirjutamise lõpetamine ja teisele jätkamine ei toimi.

Siin on mõned levinud cmdlet-käskude näited: 

Get-Process - näidata süsteemis jooksvaid protsesse;
Get-Service — näidata teenuseid ja nende staatust;
Get-Content - faili sisu kuvamine.

Sageli kasutatavate cmdlet-ide ja väliste utiliitide jaoks on Windows PowerShellil lühikesed sünonüümid – aliased (inglise keelest. Alias). Näiteks dir on Get-ChildItem alias. Sünonüümide loendis on ka Unixi süsteemide käskude analoogid (ls, ps jne) ning käsk Help kutsub välja Get-Help cmdleti. Täielikku sünonüümide loendit saab vaadata cmdleti Get-Alias ​​abil:

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid

Skriptid, funktsioonid, moodulid ja PowerShelli keel

Windows PowerShelli skriptid salvestatakse lihttekstifailidena laiendiga .ps1. Te ei saa neid topeltklõpsuga käivitada: kontekstimenüü avamiseks peate paremklõpsama ja valima üksuse "Käivita PowerShellis". Konsoolist peate kas määrama skripti täieliku tee või minema vastavasse kataloogi ja kirjutama faili nime. Skriptide käitamist piirab ka süsteemipoliitika ja praeguste sätete kontrollimiseks võite kasutada cmdlet-käsku Get-ExecutionPolicy, mis tagastab ü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 käivitada allkirjastatud ja oma skripte;
Unrestricted - lubatud käivitada mis tahes skripte.

Administraatoril on kaks võimalust. Kõige turvalisem on skriptide allkirjastamine, kuid see on üsna tõsine nõidus - seda käsitleme järgmistes artiklites. Lähme nüüd kergema vastupanu teed ja muudame poliitikat:

Set-ExecutionPolicy RemoteSigned

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Selleks tuleb PowerShell käitada administraatorina, kuigi praeguse kasutaja poliitikat saate muuta spetsiaalse sätte abil.

Skriptid on kirjutatud objektorienteeritud programmeerimiskeeles, mille käsud on nimetatud samal põhimõttel nagu eelnevalt käsitletud cmdletid: “Action-Object” (“Verb-Noun”). Selle põhieesmärk on haldusülesannete automatiseerimine, kuid see on täisväärtuslik tõlgenduskeel, millel on kõik vajalikud konstruktsioonid: tingimuslik hüpe, tsüklid, muutujad, massiivid, objektid, vigade käsitlemine jne. Iga tekstiredaktor sobib skriptimiseks, kuid kõige parem on käitada Windows PowerShell ISE.

Saate skriptile parameetreid edastada, muuta need nõutavaks ja määrata vaikeväärtusi. Lisaks võimaldab Windows PowerShell luua ja kutsuda funktsioone samamoodi nagu cmdlet-käsud, kasutades konstruktsiooni Function ja lokkis sulgusid. Funktsioonidega skripti nimetatakse mooduliks ja sellel on .psm1 laiend. Moodulid tuleb salvestada PowerShelli keskkonnamuutujates määratletud kataloogidesse. Saate neid vaadata järgmise käsuga:

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

Konveierid

Viimases näites oleme kasutanud Unixi shelli kasutajatele tuttavat konstruktsiooni. Windows PowerShellis võimaldab vertikaalne riba ka ühe käsu väljundit teise sisendisse edastada, kuid konveieri rakendamisel on oluline erinevus: me ei räägi enam märkide komplektist või mingist tekst. Sisseehitatud cmdlet-käsud või kasutaja määratud funktsioonid tagastavad objekte või objektide massiive ning saavad neid ka sisendina vastu võtta. Sarnaselt Bourne'i kestale ja selle paljudele järglastele muudab PowerShell keerukad toimingud torujuhtme abil lihtsamaks.

Lihtsaim torujuhtme näide näeb välja selline:

Get-Service | Sort-Object -property Status

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Esiteks käivitatakse Get-Service cmdlet ja seejärel edastatakse kõik selle poolt vastuvõetud teenused käsule Sort-Object, et sorteerida atribuudi Status järgi. Millisele argumendile konveieri eelmise lõigu tulemus edastatakse, sõltub selle tüübist – tavaliselt on selleks InputObject. Seda probleemi käsitletakse üksikasjalikumalt PowerShelli programmeerimiskeelele pühendatud artiklis. 

Soovi korral saate ahelat jätkata ja Sort-Object toimingu tulemuse teisele cmdlet-ile edastada (neid teostatakse vasakult paremale). Muide, Windowsi kasutajatel on juurdepääs ka kõigile Unixoididele tuttavale lehekülgede otsimise konstruktsioonile: 

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

Tööülesannete käivitamine taustal 

Üsna sageli on vaja taustal käivitada teatud käsk, et mitte oodata selle täitmise tulemust shellisessioonis. Windows PowerShellil on selle juhtumi jaoks mitu cmdlet-käsku:

Start-Job - taustaülesande käivitamine;
Stop-Job — peatada taustaülesanne;
Get-Job — vaadata taustaülesannete loendit;
Receive-Job — taustaülesande täitmise tulemuse vaatamine;
Remove-Job — taustaülesande kustutamine;
Wait-Job - taustaülesande ülekandmine tagasi konsooli.

Taustaülesande käivitamiseks kasutame käsku Start-Job ja määrame käsk või käskude komplekt lokkis sulgudes:

Start-Job {Get-Service}

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Windows PowerShelli taustaülesandeid saab manipuleerida, teades nende nimesid. Esiteks õpime, kuidas neid kuvada.

Get-Job

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Nüüd näitame töö Job1 tulemust:

Receive-Job Job1 | more

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Kõik on üsna lihtne.

Kaugkäskude täitmine

Windows PowerShell võimaldab teil käivitada käske ja skripte mitte ainult kohalikus arvutis, vaid ka kaugarvutis ja isegi terves masinarühmas. Selleks on mitu võimalust.

  • Paljudel cmdlet-käskudel on parameeter -ComputerName, kuid sel viisil ei tööta näiteks konveieri loomine;
  • Cmdlet Enter-PSSession võimaldab luua interaktiivset seanssi kaugmasinas; 
  • cmdleti kasutamine Invoke-Command saate käivitada käske või skripte ühes või mitmes kaugarvutis.

PowerShelli versioonid

PowerShell on alates selle esimesest väljalaskest 2006. aastal palju 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. Uusim versioon 6.2 avaldati 10. jaanuaril 2018. Varasemate versioonide jaoks kirjutatud skriptid töötavad tõenäoliselt ka hilisemates versioonides, kuid tagaportimine võib osutuda problemaatiliseks, kuna PowerShell on aastate jooksul arendustöö käigus kasutusele võtnud suure hulga uusi cmdlet-käske. Arvutisse installitud käsukesta versiooni saate teada, kasutades sisseehitatud muutuja $PSVersionTable atribuuti PSVersion:

$PSVersionTable.PSVersion

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Võite kasutada ka cmdleti:

Get-Variable -Name PSVersionTable –ValueOnly

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid
Sama tehakse cmdlet-käsuga Get-Host. Tegelikult on võimalusi palju, kuid nende kasutamiseks peate õppima PowerShelli programmeerimiskeelt, mida me teeme järgmine artikkel

Tulemused 

Microsoftil on õnnestunud luua tõeliselt võimas kest mugava integreeritud keskkonnaga skriptide arendamiseks. See erineb meile Unixi maailmas tuttavatest tööriistadest sügava integratsiooni poolest Windowsi perekonna operatsioonisüsteemidega, aga ka nende jaoks mõeldud tarkvaraga ja .NET Core platvormiga. PowerShelli võib nimetada objektorienteeritud kestaks, kuna cmdlet-käsud ja kasutaja määratud funktsioonid tagastavad objekte või objektide massiive ja saavad neid sisendiks võtta. Arvame, et kõik Windowsi serveriadministraatorid peaksid seda tööriista omama: aeg, mil nad said hakkama ilma käsureata, on möödas. Täiustatud konsooli kest on eriti vajalik meie odav VPS, milles töötab Windows Server Core, aga see on hoopis teine ​​lugu.

Mis on Windows PowerShell ja milleks seda kasutatakse? 1. osa: Põhifunktsioonid

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Milliseid teemasid tuleks sarja järgmistes artiklites esimesena käsitleda?

  • 53,2%Programmeerimine PowerShellis123

  • 42,4%PowerShell98 funktsioonid ja moodulid

  • 22,1%Kuidas oma stsenaariume allkirjastada?51

  • 12,1%Töötamine hoidlatega pakkujate (pakkujate) kaudu28

  • 57,6%Arvutihalduse automatiseerimine PowerShelliga133

  • 30,7%Tarkvarahaldus ja PowerShelli käivitatavate failide manustamine kolmandate osapoolte toodetesse71

231 kasutajat hääletas. 37 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar