Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės

Istoriškai Unix sistemose komandinės eilutės paslaugos buvo geriau išvystytos nei Windows, tačiau atsiradus naujam sprendimui padėtis pasikeitė.

„Windows PowerShell“ leidžia sistemos administratoriams automatizuoti daugumą įprastų užduočių. Su juo galite keisti nustatymus, sustabdyti ir paleisti paslaugas, taip pat atlikti daugelio įdiegtų programų priežiūrą. Būtų neteisinga mėlyną langą suvokti kaip kitą komandų interpretatorių. Šis požiūris neatspindi Microsoft siūlomų naujovių esmės. Tiesą sakant, „Windows PowerShell“ galimybės yra daug platesnės: trumpoje straipsnių serijoje pabandysime išsiaiškinti, kuo „Microsoft“ sprendimas skiriasi nuo mums labiau pažįstamų įrankių.

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės

Pagrindinės savybės 

Žinoma, Windows PowerShell visų pirma yra scenarijų apvalkalas, iš pradžių sukurtas .NET Framework, o vėliau – .NET Core. Skirtingai nuo apvalkalų, kurie priima ir grąžina tekstinius duomenis, Windows PowerShell veikia su .NET klasėmis, turinčiomis ypatybes ir metodus. „PowerShell“ leidžia paleisti įprastas komandas, taip pat suteikia prieigą prie COM, WMI ir ADSI objektų. Jis naudoja įvairias saugyklas, tokias kaip failų sistema arba „Windows“ registras, prie kurių pasiekiamas vadinamasis. teikėjai. Verta atkreipti dėmesį į PowerShell vykdomųjų komponentų įterpimo į kitas programas galimybę įvairioms operacijoms įgyvendinti, įskaitant. per grafinę sąsają. Taip pat yra atvirkščiai: daugelis „Windows“ programų suteikia prieigą prie savo valdymo sąsajų per „PowerShell“. 

„Windows PowerShell“ leidžia:

  • Keisti operacinės sistemos nustatymus;
  • Tvarkyti paslaugas ir procesus;
  • Konfigūruoti serverio vaidmenis ir komponentus;
  • Įdiegti programinę įrangą;
  • Tvarkyti įdiegtą programinę įrangą per specialias sąsajas;
  • Įterpti vykdomuosius komponentus į trečiųjų šalių programas;
  • Kurti scenarijus administravimo užduotims automatizuoti;
  • Darbas su failų sistema, „Windows“ registru, sertifikatų saugykla ir kt.

Apvalkalas ir kūrimo aplinka

„Windows PowerShell“ yra dviejų formų: be konsolės emuliatoriaus su komandų apvalkalu, yra ir integruota scenarijų aplinka (ISE). Norėdami pasiekti komandų eilutės sąsają, tiesiog pasirinkite atitinkamą nuorodą iš Windows meniu arba paleiskite powershell.exe iš meniu Vykdyti. Ekrane pasirodys mėlynas langas, kurio galimybės pastebimai skiriasi nuo antediluvian cmd.exe. Yra automatinis užbaigimas ir kitos funkcijos, žinomos Unix sistemų komandų apvalkalų vartotojams.

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės

Norėdami dirbti su apvalkalu, turite atsiminti kai kuriuos sparčiuosius klavišus:

  • Rodyklės aukštyn ir žemyn slenka per istoriją, kad kartotų anksčiau įvestas komandas;
  • Rodyklė dešinėn eilutės pabaigoje perrašo ankstesnę komandą po simbolio;
  • Ctrl+Home ištrina įvestą tekstą nuo žymeklio padėties iki eilutės pradžios;
  • Ctrl+End ištrina tekstą nuo žymeklio iki eilutės pabaigos.

F7 rodo langą su įvestomis komandomis ir leidžia pasirinkti vieną iš jų. Konsolė taip pat veikia su teksto pasirinkimu pele, kopijavimu-įklijavimu, žymeklio padėties nustatymu, trynimu, grįžimu – viskuo, kas mums patinka.

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
Windows PowerShell ISE yra visapusiška kūrimo aplinka su skirtukais ir sintaksės paryškintu kodo redaktoriumi, komandų kūrimo priemone, įtaisytuoju derintuvu ir kitais programavimo malonumais. Jei kūrimo aplinkos rengyklėje po komandos pavadinimo parašysite brūkšnelį, išskleidžiamajame sąraše gausite visas galimas parinktis su tipu. Galite paleisti PowerShell ISE naudodami sistemos meniu nuorodą arba vykdomąjį failą powershell_ise.exe.

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės

cmdlet 

„Windows PowerShell“ vadinamasis. cmdlet. Tai specializuotos .NET klasės, kurios suteikia įvairių funkcijų. Jie pavadinti veiksmu-objektu (arba veiksmažodžiu-daiktavardiu, jei norite), o brūkšneliu atskirta nuoroda primena predikatą ir dalyką natūralios kalbos sakiniuose. Pavyzdžiui, „Get-Help“ pažodžiui reiškia „Gauti pagalbą“ arba „PowerShell“ kontekste: „Rodyti pagalbą“. Tiesą sakant, tai yra Unix sistemose komandos man analogas, o vadovus PowerShell reikia prašyti tokiu būdu, o ne iškviečiant cmdlet su --help arba /?. Nepamirškite apie internetinę PowerShell dokumentaciją: „Microsoft“ pateikia gana išsamią informaciją.

Be Gauti, cmdlet naudoja kitus veiksmažodžius veiksmams žymėti (ir ne tik veiksmažodžius, griežtai tariant). Žemiau esančiame sąraše pateikiame keletą pavyzdžių:

Add - papildyti;
Clear - skaidrus;
Enable - įjungti;
Disable - išjungti;
New - kurti;
Remove - Ištrinti;
Set - paklausti;
Start - bėgti;
Stop - sustabdyti;
Export - eksportuoti;
Import - importas.

Yra sistemos, naudotojo ir pasirenkamos cmdlet: vykdymo metu jie visi grąžina objektą arba objektų masyvą. Jie neskiria didžiųjų ir mažųjų raidžių, t.y. Komandų vertėjo požiūriu, nėra skirtumo tarp Get-Help ir get-help. Simbolis „;“ naudojamas atskyrimui, tačiau jį dėti privaloma tik tuo atveju, jei toje pačioje eilutėje vykdomos kelios cmdlet. 

„Windows PowerShell“ cmdlet yra sugrupuoti į modulius („NetTCPIP“, „Hyper-V“ ir kt.), yra „Get-Command“ cmdlet, skirta paieškai pagal objektą ir veiksmą. Pagalbą galite parodyti taip:

Get-Help Get-Command

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės

Pagal numatytuosius nustatymus komanda rodo trumpą žinyną, tačiau prireikus parametrai (argumentai) perduodami cmdlet. Su jų pagalba galite, pavyzdžiui, gauti išsamią (parametras -Detailed) arba visą (parametras -Visa) pagalbą, taip pat pateikti pavyzdžius (parametras -Pavyzdžiai):

Get-Help Get-Command -Examples

„Windows PowerShell“ žinynas atnaujinamas naudojant cmdlet „Update-Help“. Jei komandų eilutė pasirodys per ilga, cmdlet argumentus galima perkelti į kitą, parašius paslaugos simbolį '`' ir paspaudus Enter – tiesiog baigę rašyti komandą vienoje eilutėje ir tęsti kitoje neveiks.

Štai keletas įprastų cmdlet pavyzdžių: 

Get-Process - parodyti sistemoje veikiančius procesus;
Get-Service — rodyti paslaugas ir jų statusą;
Get-Content - rodyti failo turinį.

Dažnai naudojamoms cmdlet ir išorinėms programoms Windows PowerShell turi trumpus sinonimus – slapyvardžius (iš anglų k. Alias). Pavyzdžiui, dir yra Get-ChildItem pseudonimas. Sinonimų sąraše taip pat yra komandų iš Unix sistemų analogų (ls, ps ir kt.), o Get-Help cmdlet iškviečiama pagalbos komanda. Visą sinonimų sąrašą galima peržiūrėti naudojant „Get-Alias“ cmdlet:

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės

Scenarijai, funkcijos, moduliai ir „PowerShell“ kalba

„Windows PowerShell“ scenarijai saugomi kaip paprasto teksto failai su plėtiniu .ps1. Negalite jų paleisti dukart spustelėdami: norėdami iškviesti kontekstinį meniu, turite spustelėti dešinįjį pelės klavišą ir pasirinkti elementą „Vykdyti PowerShell“. Iš konsolės turėsite arba nurodyti visą scenarijaus kelią, arba eiti į atitinkamą katalogą ir parašyti failo pavadinimą. Scenarijų vykdymą taip pat riboja sistemos politika, o norėdami patikrinti esamus nustatymus galite naudoti cmdlet Get-ExecutionPolicy, kuri pateiks vieną iš šių reikšmių:

Restricted — scenarijų paleidimas išjungtas (pagal numatytuosius nustatymus);
AllSigned - leidžiama paleisti tik patikimo kūrėjo pasirašytus scenarijus;
RemoteSigned - leidžiama paleisti pasirašytus ir nuosavus scenarijus;
Unrestricted - leidžiama paleisti bet kokius scenarijus.

Administratorius turi dvi galimybes. Saugiausia yra pasirašyti scenarijus, tačiau tai yra gana rimta užkeikimas – apie tai kalbėsime kituose straipsniuose. Dabar eikime mažiausio pasipriešinimo keliu ir pakeiskime politiką:

Set-ExecutionPolicy RemoteSigned

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
Norint tai padaryti, „PowerShell“ reikės paleisti kaip administratorius, nors dabartinio vartotojo politiką galite pakeisti naudodami specialų nustatymą.

Skriptai rašomi objektine programavimo kalba, kurios komandos įvardijamos tuo pačiu principu kaip ir anksčiau aptartos cmdlet: „Veiksmas-Objektas“ („Veiksmažodis-Daiktavardis“). Pagrindinis jos tikslas – automatizuoti administracines užduotis, tačiau tai pilnavertė interpretuojama kalba, turinti visas reikalingas konstrukcijas: sąlyginį šuolį, kilpas, kintamuosius, masyvus, objektus, klaidų tvarkymą ir kt. Bet kuri teksto rengyklė tinka scenarijui kurti, tačiau geriausia paleisti Windows PowerShell ISE.

Galite perduoti scenarijui parametrus, padaryti juos būtinus ir nustatyti numatytąsias reikšmes. Be to, „Windows PowerShell“ leidžia kurti ir iškviesti funkcijas taip pat, kaip ir cmdlet, naudojant funkcinę konstrukciją ir lenktus skliaustus. Scenarijus su funkcijomis vadinamas moduliu ir turi .psm1 plėtinį. Moduliai turi būti saugomi kataloguose, apibrėžtuose PowerShell aplinkos kintamuosiuose. Galite juos peržiūrėti naudodami šią komandą:

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

Konvejeriai

Paskutiniame pavyzdyje naudojome Unix apvalkalo vartotojams žinomą konstrukciją. „Windows PowerShell“ vertikali juosta taip pat leidžia perduoti vienos komandos išvestį į kitos komandos įvestį, tačiau yra reikšmingas konvejerio įgyvendinimo skirtumas: mes jau nekalbame apie simbolių rinkinį ar kažkokią tekstą. Integruotos cmdlet arba vartotojo nustatytos funkcijos grąžina objektus arba objektų masyvus, taip pat gali gauti juos kaip įvestį. Kaip ir Bourne apvalkalas ir daugelis jo įpėdinių, „PowerShell“ palengvina sudėtingas užduotis naudojant konvejerį.

Paprasčiausias vamzdyno pavyzdys atrodo taip:

Get-Service | Sort-Object -property Status

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
Pirmiausia vykdoma Get-Service cmdlet, o tada visos jos gautos paslaugos perduodamos į Sort-Object cmdlet, kad būtų galima rūšiuoti pagal būsenos ypatybę. Kuriam argumentui perduodamas ankstesnės dujotiekio atkarpos rezultatas, priklauso nuo jo tipo – dažniausiai tai yra InputObject. Šis klausimas bus išsamiau aptartas straipsnyje, skirtame PowerShell programavimo kalbai. 

Jei norite, galite tęsti grandinę ir operacijos Rūšiuoti-objektas rezultatą perduoti kitai cmdlet (jie bus vykdomi iš kairės į dešinę). Beje, „Windows“ vartotojai taip pat turi prieigą prie puslapių kūrimo konstrukcijos, žinomos visiems Unixoidams: 

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

Užduočių vykdymas fone 

Gana dažnai reikia paleisti tam tikrą komandą fone, kad nelauktumėte jos vykdymo rezultato apvalkalo sesijoje. „Windows PowerShell“ šiuo atveju turi keletą cmdlet:

Start-Job - foninės užduoties paleidimas;
Stop-Job — sustabdyti foninę užduotį;
Get-Job — peržiūrėti foninių užduočių sąrašą;
Receive-Job — peržiūrėti foninės užduoties vykdymo rezultatą;
Remove-Job — foninės užduoties ištrynimas;
Wait-Job - foninės užduoties perkėlimas atgal į konsolę.

Norėdami pradėti foninę užduotį, naudojame cmdlet „Start-Job“ ir skliausteliuose nurodome komandą arba komandų rinkinį:

Start-Job {Get-Service}

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
„Windows PowerShell“ fono užduotis galima valdyti žinant jų pavadinimus. Pirmiausia sužinokime, kaip juos rodyti:

Get-Job

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
Dabar parodykime darbo Job1 rezultatą:

Receive-Job Job1 | more

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
Viskas gana paprasta.

Nuotolinis komandos vykdymas

„Windows PowerShell“ leidžia vykdyti komandas ir scenarijus ne tik vietiniame kompiuteryje, bet ir nuotoliniame kompiuteryje ir net visoje mašinų grupėje. Yra keli būdai tai padaryti:

  • Daugelis cmdlet turi parametrą -ComputerName, bet tokiu būdu nepavyks, pavyzdžiui, sukurti konvejerį;
  • Cmdlet Enter-PSSession leidžia sukurti interaktyvią sesiją nuotoliniame kompiuteryje; 
  • Naudojant cmdlet Invoke-Command galite paleisti komandas arba scenarijus viename ar keliuose nuotoliniuose kompiuteriuose.

„PowerShell“ versijos

„PowerShell“ labai pasikeitė nuo pirmojo leidimo 2006 m. Įrankį galima naudoti daugelyje sistemų, veikiančių skirtingose ​​aparatinės įrangos platformose (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 ir OS X. Naujausia 6.2 versija išleista 10 m. sausio 2018 d. Tikėtina, kad ankstesnėms versijoms parašyti scenarijai veiks vėlesnėse versijose, tačiau atgalinis perkėlimas gali būti problemiškas, nes per kūrimo metus „PowerShell“ pristatė daug naujų cmdlet. Kompiuteryje įdiegtos komandos apvalkalo versiją galite sužinoti naudodami įtaisytosios $PSVersionTable kintamojo PSVersion ypatybę:

$PSVersionTable.PSVersion

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
Taip pat galite naudoti cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės
Tas pats daroma su Get-Host cmdlet. Tiesą sakant, yra daug galimybių, tačiau norint jomis naudotis, reikia išmokti PowerShell programavimo kalbą, kurią mes padarysime kitas straipsnis

rezultatai 

„Microsoft“ sugebėjo sukurti tikrai galingą apvalkalą su patogia integruota aplinka scenarijų kūrimui. Nuo mums Unix pasaulyje žinomų įrankių jis skiriasi gilia integracija su Windows šeimos operacinėmis sistemomis, taip pat su joms skirta programine įranga ir .NET Core platforma. „PowerShell“ gali būti vadinamas į objektą orientuotu apvalkalu, nes cmdlet ir vartotojo nustatytos funkcijos grąžina objektus arba objektų masyvus ir gali juos priimti kaip įvestį. Manome, kad šį įrankį turėtų turėti visi Windows serverio administratoriai: praėjo laikas, kai jie galėjo apsieiti be komandinės eilutės. Ypač reikalingas pažangus konsolės apvalkalas mūsų nebrangus VPS, kuriame veikia „Windows Server Core“., bet tai visiškai kita istorija.

Kas yra „Windows PowerShell“ ir su kuo ji valgoma? 1 dalis: Pagrindinės savybės

Apklausoje gali dalyvauti tik registruoti vartotojai. Prisijungti, Prašau.

Kokias temas pirmiausia reikėtų aptarti kituose serijos straipsniuose?

  • 53,2%Programavimas PowerShell123

  • 42,4%„PowerShell98“ funkcijos ir moduliai

  • 22,1%Kaip pasirašyti savo scenarijus?51

  • 12,1%Darbas su saugyklomis per tiekėjus (teikėjus)28

  • 57,6%Kompiuterių administravimo automatizavimas naudojant PowerShell133

  • 30,7%Programinės įrangos valdymas ir „PowerShell“ vykdomųjų failų įterpimas į trečiųjų šalių produktus71

Balsavo 231 vartotojas. 37 vartotojai susilaikė.

Šaltinis: www.habr.com

Добавить комментарий