Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet

Historiallisesti Unix-järjestelmien komentorivin apuohjelmat ovat kehittyneet paremmin kuin Windowsissa, mutta uuden ratkaisun myötä tilanne on muuttunut.

Windows PowerShellin avulla järjestelmänvalvojat voivat automatisoida useimmat rutiinitehtävät. Sen avulla voit muuttaa asetuksia, pysäyttää ja käynnistää palveluita sekä huoltaa useimpia asennettuja sovelluksia. Olisi väärin nähdä sininen ikkuna toiseksi komentotulkina. Tämä lähestymistapa ei heijasta Microsoftin ehdottamien innovaatioiden ydintä. Itse asiassa Windows PowerShellin mahdollisuudet ovat paljon laajemmat: lyhyessä artikkelisarjassa yritämme selvittää, miten Microsoftin ratkaisu eroaa meille tutuimmista työkaluista.

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet

Tärkeimmät ominaisuudet 

Tietenkin Windows PowerShell on ensisijaisesti komentosarjakuori, joka on alun perin rakennettu .NET Frameworkiin ja myöhemmin .NET Coreen. Toisin kuin tekstidataa hyväksyvät ja palauttavat komentotulkit, Windows PowerShell toimii .NET-luokkien kanssa, joilla on ominaisuuksia ja menetelmiä. PowerShell antaa sinun suorittaa yleisiä komentoja ja antaa sinulle myös pääsyn COM-, WMI- ja ADSI-objekteihin. Se käyttää erilaisia ​​tallennusvälineitä, kuten tiedostojärjestelmää tai Windowsin rekisteriä, joihin pääsee ns. tarjoajat. On syytä huomioida mahdollisuus upottaa PowerShell-suoritettavat komponentit muihin sovelluksiin erilaisten toimintojen toteuttamiseksi, mm. graafisen käyttöliittymän kautta. Myös päinvastoin: monet Windows-sovellukset tarjoavat pääsyn hallintaliittymiinsä PowerShellin kautta. 

Windows PowerShellin avulla voit:

  • Muuta käyttöjärjestelmän asetuksia;
  • Hallitse palveluita ja prosesseja;
  • Määritä palvelimen roolit ja komponentit;
  • Asenna ohjelmistot;
  • Hallitse asennettuja ohjelmistoja erityisten rajapintojen kautta;
  • Upota suoritettavat komponentit kolmannen osapuolen ohjelmiin;
  • Luo komentosarjoja hallintatehtävien automatisoimiseksi;
  • Työskentele tiedostojärjestelmän, Windowsin rekisterin, varmennevaraston jne. kanssa.

Shell ja kehitysympäristö

Windows PowerShellia on kahdessa muodossa: komentokuljella varustetun konsoliemulaattorin lisäksi on integroitu komentosarjaympäristö (ISE). Pääset komentorivikäyttöliittymään valitsemalla sopivan pikakuvakkeen Windows-valikosta tai suorittamalla powershell.exe Suorita-valikosta. Näytölle tulee sininen ikkuna, jonka ominaisuudet eroavat huomattavasti antediluvian cmd.exe-tiedoston ominaisuuksista. Unix-järjestelmien komentotulkkien käyttäjille on tuttu automaattinen täydennys ja muita ominaisuuksia.

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet

Jotta voit työskennellä kuoren kanssa, sinun on muistettava joitain pikanäppäimiä:

  • Ylös- ja alanuolet vierittävät historiaa toistaaksesi aiemmin kirjoitetut komennot;
  • Oikea nuoli rivin lopussa kirjoittaa uudelleen edellisen komennon merkki merkiltä;
  • Ctrl+Home poistaa kirjoitetun tekstin kohdistimen paikasta rivin alkuun;
  • Ctrl+End poistaa tekstiä kursorista rivin loppuun.

F7 näyttää ikkunan, jossa on kirjoitetut komennot, ja voit valita niistä yhden. Konsoli toimii myös tekstin valinnassa hiirellä, kopioi-liitä, kohdistimen sijoittaminen, poisto, askelpalautin - kaikki mistä pidämme.

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
Windows PowerShell ISE on täydellinen kehitysympäristö, jossa on välilehdillä ja syntaksilla korostettu koodieditori, komentojen rakentaja, sisäänrakennettu debuggeri ja muita ohjelmointinautintoja. Jos kirjoitat kehitysympäristön editorissa komennon nimen perään yhdysviivan, saat avattavassa luettelossa kaikki käytettävissä olevat vaihtoehdot tyypin mukaan. Voit käynnistää PowerShell ISE:n joko järjestelmävalikon pikakuvakkeen kautta tai käyttämällä suoritettavaa tiedostoa powershell_ise.exe.

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet

cmdletit 

Windows PowerShellissä ns. cmdletit. Nämä ovat erikoistuneita .NET-luokkia, jotka tarjoavat erilaisia ​​toimintoja. Niiden nimi on Action-Object (tai verbi-substantiivi, jos haluat), ja väliviivalla erotettu linkki muistuttaa predikaattia ja subjektia luonnollisen kielen lauseissa. Esimerkiksi Get-Help tarkoittaa kirjaimellisesti "Get-Help" tai PowerShell-kontekstissa "Show-Help". Itse asiassa tämä on analogi Man-komennolle Unix-järjestelmissä, ja PowerShellin käsikirjat on pyydettävä tällä tavalla, ei kutsumalla cmdlet-komentoja --help- tai /?-näppäimellä. Älä unohda PowerShellin online-dokumentaatiota: Microsoft on antanut sen melko yksityiskohtaisesti.

Get-toiminnon lisäksi cmdletissä käytetään muita verbejä toimintojen kuvaamiseen (eikä vain verbejä tarkalleen ottaen). Alla olevassa luettelossa annamme joitain esimerkkejä:

Add - lisätä;
Clear - asia selvä;
Enable - kiihottua;
Disable - Kytke pois päältä;
New - luoda;
Remove - poistaa;
Set - kysyä;
Start - juosta;
Stop - lopettaa;
Export - vienti;
Import - tuonti.

On olemassa järjestelmä-, käyttäjä- ja valinnaisia ​​cmdlet-komentoja: suorituksen seurauksena ne kaikki palauttavat objektin tai objektijoukon. Ne eivät ole kirjainkoolla, ts. komentotulkin näkökulmasta Get-Help:n ja get-helpin välillä ei ole eroa. Merkkiä ';' käytetään erottamiseen, mutta se on pakollinen vain, jos samalla rivillä suoritetaan useita cmdlet-komentoja. 

Windows PowerShell-cmdletit on ryhmitelty moduuleiksi (NetTCPIP, Hyper-V jne.), ja siellä on Get-Command-cmdlet, jonka avulla voit etsiä kohteen ja toiminnon mukaan. Voit näyttää ohjeen seuraavasti:

Get-Help Get-Command

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet

Oletusarvoisesti komento näyttää lyhyen ohjeen, mutta parametrit (argumentit) välitetään cmdleteille tarpeen mukaan. Niiden avulla saat esimerkiksi yksityiskohtaisen (parametri -Detailed) tai täyden (parametri -Full) ohjeen sekä näyttää esimerkkejä (parametri -Esimerkit):

Get-Help Get-Command -Examples

Windows PowerShellin ohje päivitetään Update-Help-cmdletillä. Jos komentorivi osoittautuu liian pitkäksi, cmdlet-argumentit voidaan siirtää seuraavaan kirjoittamalla palvelumerkki "`" ja painamalla Enter - komennon kirjoittaminen yhdelle riville ja jatkaminen toisella ei toimi.

Tässä on esimerkkejä yleisistä cmdlet-komennoista: 

Get-Process - näyttää käynnissä olevat prosessit järjestelmässä;
Get-Service — näyttää palvelut ja niiden tila;
Get-Content - näyttää tiedoston sisällön.

Usein käytetyille cmdleteille ja ulkoisille apuohjelmille Windows PowerShellissä on lyhyitä synonyymejä - aliaksia (englannista. Alias). Esimerkiksi dir on Get-ChildItem-alias. Synonyymien luettelo sisältää myös analogeja Unix-järjestelmien komentoille (ls, ps jne.), ja Get-Help-cmdlet kutsuu help-komennolla. Täydellistä luetteloa synonyymeistä voi tarkastella Get-Alias-cmdletillä:

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet

Skriptit, funktiot, moduulit ja PowerShell-kieli

Windows PowerShell-komentosarjat tallennetaan tekstitiedostoina, joiden tunniste on .ps1. Et voi käynnistää niitä kaksoisnapsauttamalla: sinun on napsautettava hiiren kakkospainikkeella avataksesi pikavalikon ja valitaan "Suorita PowerShellissä". Konsolissa sinun on joko määritettävä komentosarjan koko polku tai siirryttävä sopivaan hakemistoon ja kirjoitettava tiedoston nimi. Komentosarjojen suorittamista rajoittaa myös järjestelmäkäytäntö, ja voit tarkistaa nykyiset asetukset käyttämällä Get-ExecutionPolicy-cmdlet-komentoa, joka palauttaa yhden seuraavista arvoista:

Restricted — komentosarjojen käynnistäminen on poissa käytöstä (oletusarvoisesti);
AllSigned - vain luotettavan kehittäjän allekirjoittamien komentosarjojen käynnistäminen on sallittua;
RemoteSigned - saa suorittaa allekirjoitettuja ja omia komentosarjoja;
Unrestricted - saa suorittaa mitä tahansa komentosarjoja.

Ylläpitäjällä on kaksi vaihtoehtoa. Turvallisin on skriptien allekirjoittaminen, mutta tämä on melko vakava noituus - käsittelemme sitä tulevissa artikkeleissa. Otetaan nyt vähäisen vastustuksen tie ja muutetaan politiikkaa:

Set-ExecutionPolicy RemoteSigned

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
PowerShell on suoritettava järjestelmänvalvojana tätä varten, vaikka voit muuttaa nykyisen käyttäjän käytäntöä erityisellä asetuksella.

Skriptit kirjoitetaan olio-ohjelmointikielellä, jonka komennot on nimetty samalla periaatteella kuin aiemmin käsitellyt cmdletit: "Action-Object" ("Verbi-Noun"). Sen päätarkoitus on automatisoida hallinnollisia tehtäviä, mutta se on täysimittainen tulkittu kieli, jossa on kaikki tarvittavat konstruktit: ehdollinen hyppy, silmukat, muuttujat, taulukot, objektit, virheiden käsittely jne. Kaikki tekstieditorit sopivat komentosarjaan, mutta on parasta käyttää Windows PowerShell ISE:tä.

Voit siirtää parametreja komentosarjalle, tehdä niistä pakollisia ja asettaa oletusarvoja. Lisäksi Windows PowerShell mahdollistaa funktioiden luomisen ja kutsumisen samalla tavalla kuin cmdlet-komentokomentot käyttämällä Function-rakennetta ja kiharoita. Toimintoja sisältävää komentosarjaa kutsutaan moduuliksi, ja sen laajennus on .psm1. Moduulit on tallennettava PowerShell-ympäristömuuttujissa määritettyihin hakemistoihin. Voit tarkastella niitä seuraavalla komennolla:

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

kuljetin

Viimeisessä esimerkissä olemme käyttäneet Unix-kuoren käyttäjille tuttua rakennetta. Windows PowerShellissä pystypalkki mahdollistaa myös yhden komennon tulosteen välittämisen toisen komennon tuloon, mutta liukuhihnan toteutuksessa on merkittävä ero: emme enää puhu merkkijoukosta tai jonkinlaisesta komennosta. teksti. Sisäänrakennetut cmdlet-komentot tai käyttäjän määrittämät funktiot palauttavat objekteja tai objektiryhmiä ja voivat myös vastaanottaa niitä syötteenä. Kuten Bourne-kuori ja sen monet seuraajat, PowerShell tekee monimutkaisista tehtävistä helpompaa liukuhihnan avulla.

Yksinkertaisin esimerkki putkilinjasta näyttää tältä:

Get-Service | Sort-Object -property Status

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
Ensin suoritetaan Get-Service-cmdlet, ja sitten kaikki sen vastaanottamat palvelut välitetään Sort-Object-cmdletille Tila-ominaisuuden mukaan lajittelua varten. Se, mihin argumenttiin liukuhihnan edellisen osan tulos välitetään, riippuu sen tyypistä - yleensä se on InputObject. Tätä ongelmaa käsitellään yksityiskohtaisemmin PowerShell-ohjelmointikielelle omistetussa artikkelissa. 

Halutessasi voit jatkaa ketjua ja välittää Sort-Object -operaation tuloksen toiseen cmdlet-komennolla (ne suoritetaan vasemmalta oikealle). Muuten, Windows-käyttäjillä on pääsy myös kaikille Unixoideille tuttuihin sivutuskonstruktioihin: 

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

Tehtävien suorittaminen taustalla 

Melko usein on tarpeen suorittaa tietty komento taustalla, jotta ei odoteta sen suorittamisen tulosta shell-istunnossa. Windows PowerShellissä on useita cmdlet-komentoja tähän tapaukseen:

Start-Job - taustatehtävän käynnistäminen;
Stop-Job — lopeta taustatehtävä;
Get-Job — tarkastella taustatehtävien luetteloa;
Receive-Job — taustatehtävän suorituksen tuloksen tarkasteleminen;
Remove-Job — taustatehtävän poistaminen;
Wait-Job - taustatehtävän siirtäminen takaisin konsoliin.

Taustatehtävän aloittamiseksi käytämme Start-Job cmdlet-komentoa ja määritämme komennon tai komentojoukon aaltosulkeissa:

Start-Job {Get-Service}

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
Windows PowerShellin taustatehtäviä voidaan käsitellä niiden nimet tietämällä. Opitaanpa ensin näyttämään ne:

Get-Job

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
Näytetään nyt työn Job1 tulos:

Receive-Job Job1 | more

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
Kaikki on melko yksinkertaista.

Etäkomennon suoritus

Windows PowerShellin avulla voit suorittaa komentoja ja komentosarjoja ei vain paikallisessa tietokoneessa, vaan myös etätietokoneessa ja jopa kokonaisessa koneryhmässä. On olemassa useita tapoja tehdä tämä:

  • Monilla cmdlet-komennoilla on parametri -ComputerName, mutta tällä tavalla se ei toimi esimerkiksi kuljettimen luomisessa;
  • Cmdlet Enter-PSSession voit luoda interaktiivisen istunnon etäkoneella; 
  • cmdlet-komennolla Invoke-Command voit suorittaa komentoja tai komentosarjoja yhdessä tai useammassa etätietokoneessa.

PowerShellin versiot

PowerShell on muuttunut paljon ensimmäisestä julkaisustaan ​​vuonna 2006. Työkalu on saatavilla useisiin eri laitteistoalustoilla toimiviin järjestelmiin (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. Uusin versio 6.2, julkaistu 10. tammikuuta 2018. Aiemmille versioille kirjoitetut komentosarjat toimivat todennäköisesti myöhemmissä versioissa, mutta backporting voi olla ongelmallista, koska PowerShell on ottanut käyttöön suuren määrän uusia cmdlet-komentoja kehitysvuosien aikana. Voit selvittää tietokoneeseen asennetun komentotulkin version käyttämällä sisäänrakennetun muuttujan $PSVersionTable PSVersion-ominaisuutta:

$PSVersionTable.PSVersion

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
Voit myös käyttää cmdlet-komentoa:

Get-Variable -Name PSVersionTable –ValueOnly

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet
Sama tehdään Get-Host-cmdletillä. Itse asiassa vaihtoehtoja on monia, mutta käyttääksesi niitä sinun on opittava PowerShell-ohjelmointikieli, jonka teemme seuraava artikkeli

Tulokset 

Microsoft on onnistunut luomaan todella tehokkaan kuoren, jossa on kätevä integroitu ympäristö komentosarjojen kehittämiseen. Se eroaa meille Unix-maailmassa tutuista työkaluista syvällä integraatiolla Windows-perheen käyttöjärjestelmiin sekä niille tarkoitettuihin ohjelmistoihin ja .NET Core -alustaan. PowerShellia voidaan kutsua oliopohjaiseksi shelliksi, koska cmdlet-komentot ja käyttäjän määrittämät funktiot palauttavat objekteja tai objektiryhmiä ja voivat ottaa ne syötteenä. Mielestämme kaikkien Windows-palvelinten järjestelmänvalvojien pitäisi omistaa tämä työkalu: on kulunut aika, jolloin he pystyivät pärjäämään ilman komentoriviä. Edistynyttä konsolin kuorta tarvitaan erityisesti edullinen VPS, jossa on Windows Server Core, mutta se on täysin eri tarina.

Mikä on Windows PowerShell ja minkä kanssa sitä syödään? Osa 1: Tärkeimmät ominaisuudet

Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.

Mitä aiheita tulisi käsitellä ensimmäisenä sarjan seuraavissa artikkeleissa?

  • 53,2%Ohjelmointi PowerShell123:ssa

  • 42,4%PowerShell98:n funktiot ja moduulit

  • 22,1%Kuinka allekirjoittaa omat käsikirjoituksesi?51

  • 12,1%Työskentely tietovarastojen kanssa palveluntarjoajien (tarjoajien) kautta28

  • 57,6%Tietokoneen hallinnan automatisointi PowerShell133:lla

  • 30,7%Ohjelmiston hallinta ja PowerShell-suoritustiedostojen upottaminen kolmannen osapuolen tuotteisiin71

231 käyttäjää äänesti. 37 käyttäjää pidättyi äänestämästä.

Lähde: will.com

Lisää kommentti