Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes

Vēsturiski komandrindas utilÄ«tas Unix sistēmās ir labāk izstrādātas nekā Windows, taču lÄ«dz ar jauna risinājuma parādÄ«Å”anos situācija ir mainÄ«jusies.

Windows PowerShell ļauj sistēmas administratoriem automatizēt lielāko daļu ikdienas uzdevumu. Ar to jÅ«s varat mainÄ«t iestatÄ«jumus, apturēt un sākt pakalpojumus, kā arÄ« veikt apkopi lielākajā daļā instalēto lietojumprogrammu. BÅ«tu nepareizi uztvert zilo logu kā citu komandu tulku. Å Ä« pieeja neatspoguļo Microsoft piedāvāto jauninājumu bÅ«tÄ«bu. PatiesÄ«bā Windows PowerShell iespējas ir daudz plaŔākas: Ä«sā rakstu sērijā mēģināsim noskaidrot, ar ko Microsoft risinājums atŔķiras no mums vairāk pazÄ«stamajiem rÄ«kiem.

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes

Galvenās iezÄ«mes 

Protams, Windows PowerShell galvenokārt ir skriptu apvalks, kas sākotnēji tika izveidots uz .NET Framework un vēlāk uz .NET Core. AtŔķirÄ«bā no čaulām, kas pieņem un atgriež teksta datus, Windows PowerShell darbojas ar .NET klasēm, kurām ir rekvizÄ«ti un metodes. PowerShell ļauj palaist parastas komandas, kā arÄ« nodroÅ”ina piekļuvi COM, WMI un ADSI objektiem. Tas izmanto dažādas krātuves, piemēram, failu sistēmu vai Windows reÄ£istru, kuriem piekļūt t.s. pakalpojumu sniedzēji. Vērts atzÄ«mēt iespēju PowerShell izpildāmos komponentus iegult citās lietojumprogrammās, lai realizētu dažādas darbÄ«bas, t.sk. izmantojot grafisko interfeisu. Ir arÄ« otrādi: daudzas Windows lietojumprogrammas nodroÅ”ina piekļuvi savām pārvaldÄ«bas saskarnēm, izmantojot PowerShell. 

Windows PowerShell ļauj:

  • MainÄ«t operētājsistēmas iestatÄ«jumus;
  • PārvaldÄ«t pakalpojumus un procesus;
  • Konfigurēt servera lomas un komponentus;
  • instalēt programmatÅ«ru;
  • PārvaldÄ«t instalēto programmatÅ«ru, izmantojot Ä«paÅ”as saskarnes;
  • Iegult izpildāmos komponentus treÅ”o puÅ”u programmās;
  • Izveidot skriptus, lai automatizētu administrÄ“Å”anas uzdevumus;
  • Darbs ar failu sistēmu, Windows reÄ£istru, sertifikātu krātuvi utt.

Apvalks un izstrādes vide

Windows PowerShell ir divos veidos: papildus konsoles emulatoram ar komandu apvalku ir arÄ« integrētā skriptÄ“Å”anas vide (ISE). Lai piekļūtu komandrindas saskarnei, Windows izvēlnē vienkārÅ”i atlasiet atbilstoÅ”o saÄ«sni vai izvēlnē Palaist palaidiet powershell.exe. Ekrānā parādÄ«sies zils logs, kura iespējas ievērojami atŔķiras no faila antediluvian cmd.exe. Ir automātiskā pabeigÅ”ana un citas funkcijas, kas ir pazÄ«stamas Unix sistēmu komandu čaulu lietotājiem.

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes

Lai strādātu ar čaulu, ir jāatceras daži īsinājumtaustiņi:

  • AugÅ”up un lejup vērstās bultiņas ritina vēsturi, lai atkārtotu iepriekÅ” ievadÄ«tās komandas;
  • Labā bultiņa rindas beigās pārraksta iepriekŔējās komandas rakstzÄ«mi pēc rakstzÄ«mes;
  • Ctrl+Home izdzÄ“Å” drukāto tekstu no kursora pozÄ«cijas lÄ«dz rindas sākumam;
  • Ctrl+End izdzÄ“Å” tekstu no kursora lÄ«dz rindas beigām.

F7 parāda logu ar drukātām komandām un ļauj izvēlēties vienu no tām. Konsole darbojas arÄ« ar teksta atlasi ar peli, kopÄ“Å”anu-ielÄ«mÄ“Å”anu, kursora pozicionÄ“Å”anu, dzÄ“Å”anu, atkāpÅ”anos ā€“ visu, kas mums patÄ«k.

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Windows PowerShell ISE ir pilnÄ«ga izstrādes vide ar cilnēm un sintakses izceltu koda redaktoru, komandu veidotāju, iebÅ«vētu atkļūdotāju un citiem programmÄ“Å”anas priekiem. Ja izstrādes vides redaktorā aiz komandas nosaukuma ierakstāt defisi, visas pieejamās opcijas tiks parādÄ«tas nolaižamajā sarakstā ar norādi par veidu. PowerShell ISE var palaist, izmantojot sistēmas izvēlnes saÄ«sni vai izpildāmo failu powershell_ise.exe.

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes

Cmdlets 

Programmā Windows PowerShell tā sauktā. cmdlet. Tās ir specializētas .NET klases, kas nodroÅ”ina dažādas funkcionalitātes. Tos sauc par darbÄ«bas objektu (vai darbÄ«bas vārdu-lietvārdu, ja vēlaties), un ar defisi atdalÄ«tā saite atgādina predikātu un subjektu dabiskās valodas teikumos. Piemēram, Get-Help burtiski nozÄ«mē ā€œSaņemt palÄ«dzÄ«buā€ vai PowerShell kontekstā: ā€œRādÄ«t palÄ«dzÄ«buā€. Faktiski Ŕī ir komandas man analogs Unix sistēmās, un PowerShell rokasgrāmatas ir jāpieprasa Ŕādā veidā, nevis izsaucot cmdlet ar taustiņu --help vai /?. Neaizmirstiet par tieÅ”saistes PowerShell dokumentāciju: Microsoft to piedāvā diezgan detalizēti.

Papildus Get, cmdlet izmanto citus darbÄ«bas vārdus, lai apzÄ«mētu darbÄ«bas (un ne tikai darbÄ«bas vārdus, stingri runājot). Zemāk esoÅ”ajā sarakstā mēs sniedzam dažus piemērus:

Add - pievienot;
Clear - skaidrs;
Enable - ieslēdz;
Disable - izslēgt;
New - radīt;
Remove - dzēst;
Set - jautāt;
Start - skriet;
Stop - apstāties;
Export - eksports;
Import - imports.

Ir sistēmas, lietotāja un izvēles cmdlet: izpildes rezultātā tie visi atgriež objektu vai objektu masÄ«vu. Tie nav reÄ£istrjutÄ«gi, t.i. no komandu tulka viedokļa nav nekādas atŔķirÄ«bas starp Get-Help un get-help. AtdalÄ«Å”anai tiek izmantota rakstzÄ«me ';', taču tā ir obligāti jāievieto tikai tad, ja vienā rindā tiek izpildÄ«tas vairākas cmdlet. 

Windows PowerShell cmdlet ir sagrupētas moduļos (NetTCPIP, Hyper-V utt.), un ir Get-Command cmdlet, lai meklētu pēc objekta un darbÄ«bas. Varat parādÄ«t palÄ«dzÄ«bu Ŕādi:

Get-Help Get-Command

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes

Pēc noklusējuma komanda parāda īsu palīdzību, bet parametri (argumenti) pēc vajadzības tiek nodoti cmdlet. Ar viņu palīdzību jūs varat, piemēram, iegūt detalizētu (parametrs -Detailed) vai pilnu (parametrs -Full) palīdzību, kā arī parādīt piemērus (parameter -Examples):

Get-Help Get-Command -Examples

PalÄ«dzÄ«ba programmā Windows PowerShell tiek atjaunināta, izmantojot cmdlet Update-Help. Ja komandrinda izrādās par garu, cmdlet argumentus var pārvietot uz nākamo, ierakstot servisa rakstzÄ«mi '`' un nospiežot Enter ā€“ pabeidzot komandas rakstÄ«Å”anu vienā rindā un turpinot citā, nedarbosies.

Å eit ir daži izplatÄ«tu cmdlet piemēri: 

Get-Process - parādÄ«t darbojoÅ”os procesus sistēmā;
Get-Service ā€” parādÄ«t pakalpojumus un to statusu;
Get-Content - parādīt faila saturu.

Bieži izmantotajām cmdlet un ārējām utilÄ«tprogrammām Windows PowerShell ir Ä«si sinonÄ«mi - aizstājvārdi (no angļu valodas. Alias). Piemēram, dir ir Get-ChildItem aizstājvārds. SinonÄ«mu sarakstā ir arÄ« komandu analogi no Unix sistēmām (ls, ps utt.), un Get-Help cmdlet tiek izsaukta ar palÄ«dzÄ«bas komandu. Pilnu sinonÄ«mu sarakstu var skatÄ«t, izmantojot Get-Alias cmdlet:

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes

Skripti, funkcijas, moduļi un PowerShell valoda

Windows PowerShell skripti tiek glabāti kā vienkārÅ”a teksta faili ar paplaÅ”inājumu .ps1. Tos nevar palaist, veicot dubultklikŔķi: ar peles labo pogu noklikŔķiniet, lai atvērtu konteksta izvēlni un atlasiet vienumu ā€œPalaist PowerShellā€. No konsoles jums bÅ«s vai nu jānorāda pilns ceļŔ uz skriptu, vai arÄ« jāiet uz atbilstoÅ”o direktoriju un jāieraksta faila nosaukums. Skriptu palaiÅ”anu ierobežo arÄ« sistēmas politika, un, lai pārbaudÄ«tu paÅ”reizējos iestatÄ«jumus, varat izmantot cmdlet Get-ExecutionPolicy, kas atgriezÄ«s vienu no Ŕīm vērtÄ«bām:

Restricted ā€” skriptu palaiÅ”ana ir atspējota (pēc noklusējuma);
AllSigned - atļauta tikai uzticama izstrādātāja parakstītu skriptu palaiŔana;
RemoteSigned - atļauts palaist parakstītus un savus skriptus;
Unrestricted - atļauts palaist jebkādus skriptus.

Administratoram ir divas iespējas. VisdroŔākais ir skriptu parakstÄ«Å”ana, taču tā ir diezgan nopietna burvÄ«ba - mēs to aplÅ«kosim turpmākajos rakstos. Tagad iesim mazākās pretestÄ«bas ceļu un mainÄ«sim politiku:

Set-ExecutionPolicy RemoteSigned

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Lai to izdarÄ«tu, PowerShell bÅ«s jāpalaiž kā administratoram, lai gan paÅ”reizējā lietotāja politiku varat mainÄ«t ar Ä«paÅ”u iestatÄ«jumu.

Skripti tiek rakstÄ«ti objektorientētā programmÄ“Å”anas valodā, kuras komandas tiek nosauktas pēc tāda paÅ”a principa kā iepriekÅ” apspriestajām cmdlet: ā€œAction-Objectā€ (ā€œDarbÄ«bas vārds-Nounā€). Tās galvenais mērÄ·is ir automatizēt administratÄ«vos uzdevumus, taču tā ir pilnvērtÄ«ga interpretēta valoda, kurā ir visas nepiecieÅ”amās konstrukcijas: nosacÄ«juma lēciens, cilpas, mainÄ«gie, masÄ«vi, objekti, kļūdu apstrāde utt. JebkurÅ” teksta redaktors ir piemērots skriptÄ“Å”anai, taču vislabāk ir palaist Windows PowerShell ISE.

Varat nodot parametrus skriptam, padarÄ«t tos par obligātu un iestatÄ«t noklusējuma vērtÄ«bas. Turklāt programma Windows PowerShell ļauj izveidot un izsaukt funkcijas tāpat kā cmdlet, izmantojot konstrukciju Function un cirtainas figÅ«riekavas. Skriptu ar funkcijām sauc par moduli, un tam ir .psm1 paplaÅ”inājums. Moduļi ir jāglabā direktorijos, kas definēti PowerShell vides mainÄ«gajos. JÅ«s varat tos apskatÄ«t ar Ŕādu komandu:

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

Konveijeri

Pēdējā piemērā mēs izmantojām konstrukciju, kas ir pazÄ«stama Unix apvalka lietotājiem. Operētājsistēmā Windows PowerShell vertikālā josla ļauj arÄ« nodot vienas komandas izvadi citas komandas ievadei, taču konveijera ievieÅ”anā ir bÅ«tiska atŔķirÄ«ba: mēs vairs nerunājam par rakstzÄ«mju kopu vai kaut kādu tekstu. IebÅ«vētās cmdlet vai lietotāja definētas funkcijas atgriež objektus vai objektu masÄ«vus un var arÄ« saņemt tos kā ievadi. Tāpat kā Bourne apvalks un daudzi tā pēcteči, arÄ« PowerShell ar konveijera palÄ«dzÄ«bu atvieglo sarežģītus uzdevumus.

VienkārŔākais cauruļvada piemērs izskatās Ŕādi:

Get-Service | Sort-Object -property Status

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Vispirms tiek izpildÄ«ts Get-Service cmdlet, un pēc tam visi ar to saņemtie pakalpojumi tiek nodoti cmdlet Sort-Object kārtoÅ”anai pēc rekvizÄ«ta Statuss. Kuram argumentam tiek nodots konveijera iepriekŔējās sadaļas rezultāts, ir atkarÄ«gs no tā veida - parasti tas ir InputObject. Å is jautājums tiks apspriests sÄ«kāk rakstā, kas veltÄ«ts PowerShell programmÄ“Å”anas valodai. 

Ja vēlaties, varat turpināt ķēdi un nodot Sort-Object darbÄ«bas rezultātu citai cmdlet (tie tiks izpildÄ«ti no kreisās puses uz labo). Starp citu, Windows lietotājiem ir pieejama arÄ« lappuÅ”u veidoÅ”anas konstrukcija, kas ir pazÄ«stama visiem Unixoid: 

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

Uzdevumu izpilde fonā 

Diezgan bieži ir nepiecieŔams fonā palaist noteiktu komandu, lai čaulas sesijā nebūtu jāgaida tās izpildes rezultāts. Šim gadījumam Windows PowerShell ir vairākas cmdlet:

Start-Job - fona uzdevuma palaiŔana;
Stop-Job ā€” apturēt fona uzdevumu;
Get-Job ā€” apskatÄ«t fona uzdevumu sarakstu;
Receive-Job ā€” fona uzdevuma izpildes rezultāta apskate;
Remove-Job ā€” fona uzdevuma dzÄ“Å”ana;
Wait-Job - fona uzdevuma pārsūtīŔana atpakaļ uz konsoli.

Lai sāktu fona uzdevumu, mēs izmantojam cmdlet Start-Job un cirtainos iekavās norādām komandu vai komandu kopu:

Start-Job {Get-Service}

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Windows PowerShell fona uzdevumus var manipulēt, zinot to nosaukumus. Vispirms uzzināsim, kā tos parādīt:

Get-Job

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Tagad parādīsim darba Job1 rezultātu:

Receive-Job Job1 | more

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Viss ir diezgan vienkārŔi.

Attālās komandas izpilde

Windows PowerShell ļauj izpildīt komandas un skriptus ne tikai lokālajā datorā, bet arī attālajā datorā un pat veselā iekārtu grupā. Ir vairāki veidi, kā to izdarīt:

  • Daudzām cmdlet ir parametrs -ComputerName, bet tādā veidā nedarbosies, piemēram, izveidot konveijeru;
  • Cmdlet Enter-PSSession ļauj izveidot interaktÄ«vu sesiju attālā maŔīnā; 
  • Izmantojot cmdlet Invoke-Command varat palaist komandas vai skriptus vienā vai vairākos attālos datoros.

PowerShell versijas

PowerShell ir daudz mainÄ«jies kopÅ” tās pirmās izlaiÅ”anas 2006. gadā. Å is rÄ«ks ir pieejams daudzām sistēmām, kas darbojas dažādās aparatÅ«ras platformās (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 un OS X. Jaunākais 6.2 laidiens tika izlaists 10. gada 2018. janvārÄ«. Skripti, kas rakstÄ«ti iepriekŔējām versijām, visticamāk, darbosies jaunākās versijās, taču atpakaļportÄ“Å”ana var bÅ«t problemātiska, jo PowerShell izstrādes gadu laikā ir ieviesusi lielu skaitu jaunu cmdlet. Datorā instalētās komandas čaulas versiju var uzzināt, izmantojot iebÅ«vētā mainÄ«gā $PSVersionTable rekvizÄ«tu PSVersion:

$PSVersionTable.PSVersion

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Varat arī izmantot cmdlet:

Get-Variable -Name PSVersionTable ā€“ValueOnly

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes
Tas pats tiek darÄ«ts ar cmdlet Get-Host. Faktiski ir daudz iespēju, taču, lai tās izmantotu, ir jāapgÅ«st PowerShell programmÄ“Å”anas valoda, ko mēs darÄ«sim nākamais raksts

Rezultāti 

Microsoft ir izdevies izveidot patieŔām jaudÄ«gu apvalku ar ērtu integrētu vidi skriptu izstrādei. No mums Unix pasaulē pazÄ«stamajiem rÄ«kiem tas atŔķiras ar dziļu integrāciju ar Windows saimes operētājsistēmām, kā arÄ« ar tām paredzēto programmatÅ«ru un .NET Core platformu. PowerShell var saukt par objektorientētu apvalku, jo cmdlet un lietotāja definētas funkcijas atgriež objektus vai objektu masÄ«vus un var tos izmantot kā ievadi. Mēs domājam, ka visiem Windows serveru administratoriem vajadzētu piederēt Å”im rÄ«kam: ir pagājis laiks, kad viņi varēja iztikt bez komandrindas. ÄŖpaÅ”i nepiecieÅ”ams uzlabots konsoles apvalks mÅ«su zemo izmaksu VPS, kurā darbojas Windows Server Core, bet tas ir pavisam cits stāsts.

Kas ir Windows PowerShell un ar ko to ēd? 1. daļa: Galvenās iezīmes

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Kādas tēmas vispirms būtu jāaplūko nākamajos sērijas rakstos?

  • 53,2%ProgrammÄ“Å”ana programmā PowerShell123

  • 42,4%PowerShell98 funkcijas un moduļi

  • 22,1%K parakstÄ«t savus skriptus?51

  • 12,1%Darbs ar krātuvēm, izmantojot pakalpojumu sniedzējus (providers)28

  • 57,6%Datoru administrÄ“Å”anas automatizācija, izmantojot PowerShell133

  • 30,7%ProgrammatÅ«ras pārvaldÄ«ba un PowerShell izpildāmo failu iegulÅ”ana treÅ”o puÅ”u produktos71

Nobalsoja 231 lietotājs. 37 lietotāji atturējās.

Avots: www.habr.com

Pievieno komentāru