Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti

Historicky sú nástroje príkazového riadku na systémoch Unix lepšie vyvinuté ako na Windows, ale s príchodom nového riešenia sa situácia zmenila.

Windows PowerShell umožňuje správcom systému automatizovať väčšinu bežných úloh. Pomocou neho môžete meniť nastavenia, zastavovať a spúšťať služby a tiež vykonávať údržbu väčšiny nainštalovaných aplikácií. Bolo by nesprávne vnímať modré okno ako ďalší interpret príkazov. Tento prístup neodráža podstatu inovácií navrhovaných spoločnosťou Microsoft. V skutočnosti sú možnosti Windows PowerShell oveľa širšie: v krátkej sérii článkov sa pokúsime prísť na to, ako sa riešenie Microsoftu líši od nástrojov, ktoré poznáme viac.

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti

Kľúčové vlastnosti 

Samozrejme, Windows PowerShell je primárne skriptovací shell, pôvodne postavený na .NET Framework a neskôr na .NET Core. Na rozdiel od shellov, ktoré prijímajú a vracajú textové údaje, Windows PowerShell pracuje s triedami .NET, ktoré majú vlastnosti a metódy. PowerShell vám umožňuje spúšťať bežné príkazy a tiež vám poskytuje prístup k objektom COM, WMI a ADSI. Využíva rôzne úložiská, ako napríklad súborový systém alebo register Windows, na prístup ku ktorým tzv. poskytovateľov. Za zmienku stojí možnosť zabudovania spustiteľných komponentov PowerShell do iných aplikácií na implementáciu rôznych operácií, vr. cez grafické rozhranie. Platí to aj naopak: mnohé aplikácie Windows poskytujú prístup k rozhraniam na správu prostredníctvom prostredia PowerShell. 

Windows PowerShell vám umožňuje:

  • Zmeňte nastavenia operačného systému;
  • Riadiť služby a procesy;
  • Konfigurácia rolí a komponentov servera;
  • Inštalácia softvéru;
  • Spravujte nainštalovaný softvér prostredníctvom špeciálnych rozhraní;
  • Vkladať spustiteľné komponenty do programov tretích strán;
  • Vytvárajte skripty na automatizáciu úloh správy;
  • Práca so súborovým systémom, registrom Windows, úložiskom certifikátov atď.

Shell a vývojové prostredie

Windows PowerShell existuje v dvoch formách: okrem emulátora konzoly s príkazovým shellom existuje integrované skriptovacie prostredie (ISE). Ak chcete získať prístup k rozhraniu príkazového riadka, jednoducho vyberte príslušnú skratku z ponuky Windows alebo spustite powershell.exe z ponuky Spustiť. Na obrazovke sa objaví modré okno, výrazne odlišné vo schopnostiach od predpotopného cmd.exe. Existuje automatické dopĺňanie a ďalšie funkcie známe používateľom príkazových shellov pre systémy Unix.

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti

Ak chcete pracovať s shellom, musíte si zapamätať niektoré klávesové skratky:

  • Šípky nahor a nadol sa posúvajú v histórii a opakujú sa predtým zadané príkazy;
  • Šípka doprava na konci riadku prepíše predchádzajúci príkaz znak po znaku;
  • Ctrl+Home vymaže napísaný text od pozície kurzora po začiatok riadku;
  • Ctrl+End vymaže text od kurzora po koniec riadku.

F7 zobrazí okno s napísanými príkazmi a umožní vám vybrať jeden z nich. Konzola funguje aj s výberom textu pomocou myši, kopírovaním a prilepením, polohovaním kurzora, vymazávaním, backspace – všetko, čo máme radi.

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
Windows PowerShell ISE je kompletné vývojové prostredie s editorom kódu s kartami a zvýraznenou syntaxou, tvorcom príkazov, vstavaným debuggerom a ďalšími pôžitkami z programovania. Ak v editore vývojového prostredia napíšete za názov príkazu pomlčku, v rozbaľovacom zozname sa zobrazia všetky dostupné možnosti s označením typu. PowerShell ISE môžete spustiť buď prostredníctvom skratky zo systémovej ponuky, alebo pomocou spustiteľného súboru powershell_ise.exe.

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti

Cmdlets 

V prostredí Windows PowerShell je tzv. cmdlets. Ide o špecializované triedy .NET, ktoré poskytujú rôzne funkcie. Nazývajú sa Action-Object (alebo Sloveso-Noun, ak chcete) a odkaz oddelený pomlčkou pripomína predikát a predmet vo vetách v prirodzenom jazyku. Napríklad Get-Help doslova znamená „Get-Help“ alebo v kontexte PowerShell: „Show-Help“. V skutočnosti ide o analóg príkazu man v systémoch Unix a manuály v PowerShell je potrebné vyžiadať týmto spôsobom, a nie volaním cmdlet pomocou klávesu --help alebo /?. Nezabudnite na online dokumentáciu PowerShell: Microsoft to má dosť podrobné.

Okrem Get používajú cmdlety ďalšie slovesá na označenie akcií (a nielen sloves, prísne vzaté). V zozname nižšie uvádzame niekoľko príkladov:

Add - pridať;
Clear - jasný;
Enable - zapnúť;
Disable - vypnúť;
New - vytvárať;
Remove - vymazať;
Set - opýtať sa;
Start - behať;
Stop - zastaviť;
Export - export;
Import - dovoz.

Existujú systémové, používateľské a voliteľné cmdlety: v dôsledku vykonania všetky vrátia objekt alebo pole objektov. Nerozlišujú veľké a malé písmená, t.j. z pohľadu tlmočníka príkazov nie je rozdiel medzi Get-Help a get-help. Znak ';' sa používa na oddelenie, ale je povinné ho vložiť iba vtedy, ak sa na tom istom riadku spúšťa niekoľko cmdletov. 

Rutiny cmdlet Windows PowerShell sú zoskupené do modulov (NetTCPIP, Hyper-V atď.) a existuje rutina cmdlet Get-Command na vyhľadávanie podľa objektu a akcie. Pomocníka k nemu môžete zobraziť takto:

Get-Help Get-Command

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti

V predvolenom nastavení príkaz zobrazuje krátku pomoc, ale parametre (argumenty) sa podľa potreby odovzdávajú cmdletom. S ich pomocou môžete napríklad získať podrobnú (parameter -Detailed) alebo úplnú (parameter -Full) pomoc, ako aj zobraziť príklady (parameter -Examples):

Get-Help Get-Command -Examples

Pomocníka v prostredí Windows PowerShell aktualizuje rutina cmdlet Update-Help. Ak sa ukáže, že príkazový riadok je príliš dlhý, argumenty cmdlet možno presunúť na ďalší tak, že napíšete servisný znak '`' a stlačíte Enter - dokončenie písania príkazu na jednom riadku a pokračovanie v ďalšom nebude fungovať.

Tu je niekoľko príkladov bežných cmdletov: 

Get-Process - zobraziť bežiace procesy v systéme;
Get-Service — zobraziť služby a ich stav;
Get-Content - zobrazenie obsahu súboru.

Pre často používané cmdlety a externé utility má Windows PowerShell krátke synonymá – aliasy (z angl. Alias). Napríklad dir je alias pre Get-ChildItem. Zoznam synoným zahŕňa aj analógy príkazov zo systémov Unix (ls, ps atď.) a cmdlet Get-Help sa volá príkazom help. Úplný zoznam synoným je možné zobraziť pomocou cmdlet Get-Alias ​​​​:

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti

Skripty, funkcie, moduly a jazyk PowerShell

Skripty prostredia Windows PowerShell sú uložené ako obyčajné textové súbory s príponou .ps1. Nemôžete ich spustiť dvojitým kliknutím: musíte kliknúť pravým tlačidlom myši, aby ste vyvolali kontextové menu a vyberte položku „Spustiť v PowerShell“. Z konzoly budete musieť buď zadať úplnú cestu k skriptu, alebo prejsť do príslušného adresára a napísať názov súboru. Spúšťanie skriptov je tiež obmedzené systémovou politikou a na kontrolu aktuálnych nastavení môžete použiť cmdlet Get-ExecutionPolicy, ktorý vráti jednu z nasledujúcich hodnôt:

Restricted — spúšťanie skriptov je zakázané (v predvolenom nastavení);
AllSigned - povolené je len spúšťanie skriptov podpísaných dôveryhodným vývojárom;
RemoteSigned - povolené spúšťanie podpísaných a vlastných skriptov;
Unrestricted - povolené spúšťanie ľubovoľných skriptov.

Správca má dve možnosti. Najbezpečnejšie zahŕňa podpisovanie skriptov, ale toto je dosť vážne čarovanie - budeme sa tomu venovať v budúcich článkoch. Teraz poďme cestou najmenšieho odporu a zmeňme politiku:

Set-ExecutionPolicy RemoteSigned

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
Na to bude potrebné spustiť PowerShell ako správca, hoci politiku pre aktuálneho používateľa môžete zmeniť pomocou špeciálneho nastavenia.

Skripty sú napísané v objektovo orientovanom programovacom jazyku, ktorého príkazy sú pomenované podľa rovnakého princípu ako predtým diskutované cmdlety: „Action-Object“ („Sloveso-podstatné meno“). Jeho hlavným účelom je automatizácia administratívnych úloh, ale je to plnohodnotný interpretovaný jazyk, ktorý má všetky potrebné konštrukcie: podmienený skok, cykly, premenné, polia, objekty, spracovanie chýb atď. Na skriptovanie je vhodný akýkoľvek textový editor, ale najlepšie je spustiť Windows PowerShell ISE.

Parametre môžete odovzdať skriptu, nastaviť ich ako povinné a nastaviť predvolené hodnoty. Okrem toho vám Windows PowerShell umožňuje vytvárať a volať funkcie rovnakým spôsobom ako cmdlety pomocou konštrukcie Function a zložených zátvoriek. Skript s funkciami sa nazýva modul a má príponu .psm1. Moduly musia byť uložené v adresároch definovaných v premenných prostredia PowerShell. Môžete ich zobraziť pomocou nasledujúceho príkazu:

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

dopravník

V poslednom príklade sme použili konštrukciu, ktorá je známa používateľom unixového shellu. V prostredí Windows PowerShell vám zvislý pruh tiež umožňuje odovzdať výstup jedného príkazu vstupu druhého, ale existuje významný rozdiel v implementácii potrubia: už nehovoríme o množine znakov alebo nejakom druhu text. Vstavané rutiny cmdlet alebo používateľom definované funkcie vracajú objekty alebo polia objektov a môžu ich tiež prijímať ako vstup. Rovnako ako Bourne shell a jeho mnohí nástupcovia, PowerShell uľahčuje zložité úlohy pomocou potrubia.

Najjednoduchší príklad potrubia vyzerá takto:

Get-Service | Sort-Object -property Status

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
Najprv sa vykoná cmdlet Get-Service a potom sa všetky ním prijaté služby odovzdajú cmdlet Sort-Object na zoradenie podľa vlastnosti Status. Do ktorého argumentu sa odovzdá výsledok predchádzajúcej časti potrubia, závisí od jeho typu – zvyčajne je to InputObject. Tejto problematike sa budeme podrobnejšie venovať v článku venovanom programovaciemu jazyku PowerShell. 

Ak chcete, môžete pokračovať v reťazci a odovzdať výsledok operácie Sort-Object inému cmdlet (vykonajú sa zľava doprava). Mimochodom, používatelia systému Windows majú tiež prístup ku konštrukcii stránkovania, ktorá je známa všetkým Unixoidom: 

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

Spustenie úloh na pozadí 

Pomerne často je potrebné spustiť určitý príkaz na pozadí, aby sa nečakalo na výsledok jeho vykonania v shell session. Windows PowerShell má pre tento prípad niekoľko cmdletov:

Start-Job - spustenie úlohy na pozadí;
Stop-Job — zastaviť úlohu na pozadí;
Get-Job — zobraziť zoznam úloh na pozadí;
Receive-Job — zobrazenie výsledku vykonania úlohy na pozadí;
Remove-Job — vymazanie úlohy na pozadí;
Wait-Job - prenos úlohy na pozadí späť do konzoly.

Ak chcete spustiť úlohu na pozadí, použijeme cmdlet Start-Job a zadáme príkaz alebo množinu príkazov v zložených zátvorkách:

Start-Job {Get-Service}

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
Úlohy na pozadí v prostredí Windows PowerShell možno manipulovať tak, že poznáte ich názvy. Najprv sa naučme, ako ich zobraziť:

Get-Job

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
Teraz si ukážme výsledok úlohy Job1:

Receive-Job Job1 | more

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
Všetko je celkom jednoduché.

Vzdialené vykonávanie príkazov

Windows PowerShell umožňuje spúšťať príkazy a skripty nielen na lokálnom počítači, ale aj na vzdialenom počítači a dokonca aj na celej skupine počítačov. Existuje niekoľko spôsobov, ako to urobiť:

  • Mnoho cmdletov má parameter -ComputerName, ale týmto spôsobom nebude fungovať napríklad vytvorenie dopravníka;
  • cmdlet Enter-PSSession umožňuje vytvoriť interaktívnu reláciu na vzdialenom počítači; 
  • Pomocou cmdlet Invoke-Command môžete spúšťať príkazy alebo skripty na jednom alebo viacerých vzdialených počítačoch.

Verzie prostredia PowerShell

PowerShell sa od svojho prvého vydania v roku 2006 veľa zmenil. Nástroj je k dispozícii pre mnoho systémov bežiacich na rôznych hardvérových platformách (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 a OS X. Najnovšie vydanie 6.2 vyšlo 10. januára 2018. Skripty napísané pre staršie verzie budú pravdepodobne fungovať aj v novších verziách, ale spätné portovanie môže byť problematické, pretože PowerShell v priebehu rokov vývoja zaviedol veľké množstvo nových cmdletov. Verziu príkazového prostredia nainštalovaného v počítači môžete zistiť pomocou vlastnosti PSVersion vstavanej premennej $PSVersionTable:

$PSVersionTable.PSVersion

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
Môžete tiež použiť cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti
To isté sa robí s cmdlet Get-Host. V skutočnosti existuje veľa možností, ale aby ste ich mohli používať, musíte sa naučiť programovací jazyk PowerShell, ktorý budeme robiť v ďalší článok

Výsledky 

Microsoftu sa podarilo vytvoriť skutočne výkonný shell s pohodlným integrovaným prostredím na vývoj skriptov. Od nástrojov, ktoré poznáme vo svete Unixu, sa líši hlbokou integráciou s operačnými systémami rodiny Windows, ako aj so softvérom pre ne a platformou .NET Core. PowerShell možno nazvať objektovo orientovaným shellom, pretože rutiny cmdlet a používateľom definované funkcie vracajú objekty alebo polia objektov a môžu ich brať ako vstup. Myslíme si, že všetci správcovia serverov v systéme Windows by mali vlastniť tento nástroj: uplynul čas, keď sa mohli zaobísť bez príkazového riadku. Pokročilý konzolový shell je obzvlášť potrebný na naše nízkonákladové VPS so systémom Windows Server Core, ale to je úplne iný príbeh.

Čo je Windows PowerShell a s čím sa používa? Časť 1: Kľúčové vlastnosti

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

Aké témy by sa mali preberať ako prvé v ďalších článkoch série?

  • 53,2%Programovanie v PowerShell123

  • 42,4%Funkcie a moduly PowerShell98

  • 22,1%Ako podpísať svoje vlastné skripty?51

  • 12,1%Práca s úložiskami prostredníctvom poskytovateľov (poskytovateľov)28

  • 57,6%Automatizácia správy počítača pomocou PowerShell133

  • 30,7%Správa softvéru a vkladanie spustiteľných súborov PowerShell do produktov tretích strán71

Hlasovalo 231 používateľov. 37 užívateľov sa zdržalo hlasovania.

Zdroj: hab.com

Pridať komentár