Počítače Windows Internet

Popis powershell. Čo je PowerShell? Začíname s PowerShell

5. novembra 2014 o 20:07 hod

Skokový štart v PowerShell (časť I)

  • Správa systému,
  • PowerShell
  • Návod

Iba automatizácia. Iba PowerShell.

Predslov

Ako hobby a keď mám čas, učím študentov na UKIT (predtým Moskovská štátna vysoká škola informačných technológií). Momentálne mám málo času venovať sa skupine študentov, ale stačí pripraviť príspevok tu na Habré.

Pracujem ako systémový administrátor vo veľkej ne-IT spoločnosti s množstvom IT zdrojov. Podľa typu činnosti sa zdá, že rieši veľké množstvo podobných úloh pre používateľov servisu.

S jazykom PowerShell som sa zoznámil asi pred dvoma rokmi, ale vážne som sa do neho pustil až o rok neskôr, pričom som si najprv neuvedomoval jeho obrovské schopnosti. V tomto článku sa v prvom rade zameriam na tých, ktorí chcú začať pracovať s PowerShell, no ešte mu neveria alebo nevedia, akým spôsobom sa k tomuto zázraku postaviť.

Upozornenie: PowerShell je návykový.

Úvod

Wikipedia nám hovorí:
Windows PowerShell- rozšíriteľný automatizačný nástroj od Microsoft, ktorý sa skladá z príkazového riadku a sprievodného skriptovacieho jazyka.

Prostredie PowerShell môže vyzerať ako príkazový riadok:


powershell.exe

Alebo ako aplikácia:


powershell_ise.exe

Powershell_ise.exe nazývané integrované skriptovacie prostredie – Windows PowerShell ISE. Umožňuje vám pracovať s jazykom v pohodlnom prostredí so zvýrazňovaním syntaxe, konštruktorom príkazov, automatickým dokončovaním príkazov stlačením TAB a ďalšími vymoženosťami. Ideálne na vytváranie a testovanie skriptov.

Na spustenie prostredia powershell.exe alebo powershell_ise.exe Stačí zadať rovnaký názov do vykonávacieho riadku.

Súbor skriptu PowerShell má príponu .ps1.

Skript nemožno spustiť s dvojitým LMB. Toto sa robí špeciálne, aby nedošlo k poškodeniu systému náhodne spusteným skriptom.

Ak chcete spustiť, kliknite pravým tlačidlom myši a vyberte „Spustiť pomocou PowerShell“:

Okrem toho, že existuje obmedzenie na spúšťanie LMB skriptov, štandardne je spúšťanie skriptov v systéme zakázané, opäť z vyššie opísaného dôvodu – aby nedošlo k poškodeniu systému. Ak chcete skontrolovať aktuálnu politiku vykonávania, spustite príkaz:

Get-ExecutionPolicy

Dostaneme jednu z nasledujúcich hodnôt. S vysokou pravdepodobnosťou, ak to bolo prvé spustenie, sa dostaneme Obmedzené.

  • Obmedzené- Skripty sa nedajú spustiť;
  • Všetko podpísané- Spustiť možno iba skripty podpísané dôveryhodným vydavateľom. Pred spustením skriptu dôveryhodného vydavateľa sa bude vyžadovať potvrdenie;
  • RemoteSigned- Povolené spúšťanie nami vytvorených skriptov a skriptov stiahnutých podpísaných dôveryhodným vydavateľom;
  • Neobmedzené- Žiadne obmedzenia, všetky skripty je možné spustiť.

Na vykonanie a testovanie znížte politiku na RemoteSigned spustením príkazu:

Set-ExecutionPolicy RemoteSigned

Začnime

Cmdlet
  • Rutiny sú príkazy prostredia PowerShell, ktoré obsahujú rôzne funkcie;
  • Cmdlety môžu byť vytvorené buď systémom alebo používateľom;
  • Cmdlets sú pomenované podľa pravidla Verb-Noun, čo uľahčuje ich zapamätanie;
  • Výsledky výstupu cmdletov ako objekty alebo kolekcie objektov;
  • Rutiny cmdlet môžu prijímať údaje na spracovanie aj prenášať údaje prostredníctvom kanála (viac o kanáloch neskôr);
  • Rutiny rutiny nerozlišujú veľké a malé písmená (môžete napísať get-process, Get-Process a Get-proCeSs);
  • Nie je potrebné vkladať " za cmdlets ; “, s výnimkou prípadov, keď spúšťame viacero cmdletov na jednom riadku (Get-Process; Get-Services).

Napríklad, aby sme získali aktuálne procesy, spustíme príkaz:

A dostaneme výsledok:

Vyskúšajte sami:

Get-Service #na získanie stavu služieb spustených na počítačoch

Get-Content C:\Windows\System32\drivers\etc\hosts #na získanie obsahu súboru. V tomto prípade súbor hosts

Nemusíte vedieť všetky cmdlety naspamäť. Získajte pomoc zachráni situáciu.
Informácie o všetkých dostupných cmdletoch môžete získať spustením nasledujúceho príkazu:

cmdlet Get-Help – Kategória

Ak používame PowerShell ISE, zjednodušujeme proces vývoja.
Stačí zadať pomlčku" - " po zadaní cmdlet a získame všetky možné možnosti pre parametre a ich typy:

Skúste:

Get-Service – Name p*

Ak však zabudneme, aké vlastnosti má ten či onen cmdlet, prejdeme si ho Staňte sa členom:

Get-Process | Získať člena #Podpísať "|" nazývaný dopravník. O ňom nižšie.

Nemáte dostatok informácií? Pozrime sa na pomocníka s parametrom - Príklady:

Get-Help Get-Process -Príklady

Dostávame popis Get-Process a dokonca aj s príkladmi použitia:

  • Cmdlets môžu mať skrátené názvy – aliasy. Napríklad namiesto Získajte pomoc možno použiť jednoducho Pomoc. Ak chcete získať všetky skratky, spustite sa Získať alias.

Skúste:

Poznámkový blok Start-Process

Čo je podobné ako pri písaní:

Spustite poznámkový blok

Teraz zastavme proces:

Stop-Process -Poznámkový blok s názvom

Spps -Poznámkový blok s názvom

O niečo skôr sme povedali, že cmdlety sú pomenované podľa pravidla Verb-Noun. Dovoľte mi objasniť, že sloveso nemusí byť Získajte. Okrem toho, čo môžeme prijať, môžeme žiadať Set(pamätajte, Set-ExecutionPolicy), spustite Štart, stop Stop, výkon Von, vytvorte Nový a veľa ďalších. Názov cmdlet nie je obmedzený na nič a keď si vytvoríme vlastný, môžeme ho pomenovať, ako len naše srdce túži.

Pokúsme sa o výstup do súboru:

"Ahoj Habr!" | Out-File C:\test.txt & C:\test.txt

Mimochodom, môžete to napísať takto:

"Ahoj Habr!" > C:\test.txt & C:\test.txt

Mnoho používateľov vie o príkazovom riadku, ale len veľmi málo z nich počulo o prostredí Windows PowerShell. V istom zmysle je PowerShell nástroj, ktorého cieľom je nahradiť príkazový riadok a poskytnúť výkonnejšie možnosti na správu operačného systému Windows. V tomto článku sa pokúsime jasne vysvetliť, čo je tento nástroj, prečo je taký silný a kto ho najčastejšie používa.

Čo je PowerShell?

Pre lepšie pochopenie musíme najprv pochopiť, čo je to škrupina. V informatike je shell používateľské rozhranie, ktoré poskytuje prístup k rôznym službám operačného systému. Shell môže byť založený na príkazovom riadku alebo môže obsahovať grafické používateľské rozhranie (GUI).

Windows PowerShell je shell vyvinutý spoločnosťou Microsoft na účely automatizácie úloh a správy konfigurácie. Tento výkonný shell je založený na .NET frameworku a obsahuje shell príkazového riadku a skriptovací jazyk.

Nad štandardným prostredím príkazového riadka môže byť aj Windows PowerShell ISE. ISE funguje ako integrované skriptovacie prostredie – grafické používateľské rozhranie, ktoré umožňuje vytvárať rôzne skripty bez toho, aby ste museli zadávať všetky príkazy na príkazovom riadku.

Prvá verzia PowerShell bola vydaná v novembri 2006 pre Windows XP, Windows Server 2003 a Windows Vista. Najnovšia je verzia 4.0, ktorá bola vydaná v októbri 2013. Štandardne sa dodáva s Windows 8.1 a Windows Server 2012 R2.

Čo môžete robiť s PowerShell?

Microsoft vyvinul Windows PowerShell ako nástroj, ktorý pomáha automatizovať a rýchlo riešiť mnohé únavné administratívne úlohy. Môžete napríklad použiť PowerShell na zobrazenie všetkých zariadení USB nainštalovaných na jednom alebo viacerých počítačoch vo vašej sieti, alebo môžete nastaviť časovo náročnú úlohu, ktorá sa spustí na pozadí, zatiaľ čo vy robíte inú prácu. Môžete tiež identifikovať a ukončiť procesy, ktoré nereagujú, alebo filtrovať špecifické informácie o počítačoch vo vašej sieti a exportovať ich vo formáte HTML.

Možnosti prostredia PowerShell vám umožňujú zjednodušiť a automatizovať časovo náročné a opakujúce sa úlohy vytváraním skriptov a kombinovaním viacerých príkazov.

Ak ste správcom siete, PowerShell bude veľmi užitočný pri práci s Active Directory. Ak vezmeme do úvahy, že nástroj obsahuje stovky prispôsobiteľných príkazov nazývaných cmdlets, pravdepodobnosť, že vám PowerShell pomôže stať sa produktívnejšími, je veľmi vysoká.

Ako spustiť PowerShell v systéme Windows 8.1?

Ak nemáte dlaždicu PowerShell na obrazovke Štart alebo skratku na pracovnej ploche, môžete ju otvoriť pomocou vyhľadávania – toto je jeden z najjednoduchších spôsobov. Stlačte +Q, napíšte „powershell“ a potom stlačte Enter.

PowerShell môžete otvoriť aj zo sekcie Aplikácie na úvodnej obrazovke: Prejdite na úvodnú obrazovku a presuňte kurzor do ľavého dolného rohu, tesne pod poslednú dlaždicu v prvom stĺpci. Kliknite na ikonu so šípkou smerujúcou nadol. Potom kliknite na ikonu PowerShell v sekcii „Utilities“.

Ak chcete otvoriť PowerShell pomocou dialógového okna Spustiť, stlačte +R, napíšte „powershell“ a stlačte Enter.

Ako spustiť PowerShell v systéme Windows 7?

V systéme Windows 7 môžete tento nástroj nájsť vyhľadaním výrazu „powershell“ v ponuke Štart.

PowerShell môžete otvoriť aj cez ponuku Štart v časti Príslušenstvo.

Je zrejmé, že vyššie uvedený príkaz v okne Spustiť funguje aj v systéme Windows 7.

Kto zvyčajne používa PowerShell?

Bezpochyby je PowerShell voľbou mnohých IT administrátorov. A to z dobrého dôvodu, pretože tento nástroj výrazne zjednodušuje riadiace operácie a znižuje množstvo práce vo veľkých podnikových sieťach.

Povedzme, že spravujete veľkú sieť obsahujúcu viac ako päťsto serverov a potrebujete implementovať nové bezpečnostné riešenie, ktoré závisí od nejakej služby, ktorá musí na týchto serveroch bežať. Samozrejme, môžete sa pripojiť ku každému serveru a zistiť, či je na ňom nainštalovaná a spustená požadovaná služba. V tomto prípade je však nepravdepodobné, že by bol váš manažment spokojný, pretože na dokončenie úlohy budete potrebovať príliš veľa času.

S PowerShell môžete túto prácu vykonať v priebehu niekoľkých minút, pretože celú operáciu je možné vykonať pomocou jediného skriptu, ktorý bude zhromažďovať informácie o službách bežiacich na určených serveroch a ukladať ich ako textový súbor, napr.

PowerShell vám umožňuje urobiť oveľa viac, než je možné pokryť v jednom článku, takže ak máte skutočný záujem, dôrazne vám odporúčame, aby ste si kúpili a prečítali jednu z mnohých kníh, ktoré pokrývajú silu tohto nástroja.

Prajem pekný deň!

V tomto článku sa pozrieme na takú technológiu od Microsoftu ako Windows PowerShell, povieme si, čo je PowerShell, čo sú to cmdlets a pipeline, ako písať skripty a moduly a dotkneme sa aj ďalších nemenej dôležitých a užitočných funkcií prostredia Windows PowerShell.

Čo prispelo k vzniku prostredia Windows PowerShell?

Pred PowerShell existovali ( a tam sú) nasledujúce nástroje na automatizáciu a správu služieb: Windows príkazový riadok a Windows Script Host. Ale tieto technológie majú nevýhody.

Príkazový riadok Windows má tiež schopnosť vykonávať niektoré administratívne úlohy a schopnosť zaznamenať algoritmus akcií, uložiť ho ako skript (bat súbor), pričom môžete použiť určité programovacie prvky, napríklad použiť premenné, podmienené konštrukcie, a dokonca aj niečo ako cykly.

Väčšina softvérových produktov má konzolové rozhranie, t.j. môžeme program ovládať pomocou príkazového riadku, pričom šetríme zdroje vďaka absencii nákladov na prevádzku grafického rozhrania. Microsoft dokonca vydáva edície bez grafického rozhrania pre serverový operačný systém Windows Server ( Server Core, Windows Server 2016 má dokonca aj Nano Server), ale to všetko nestačí, keďže možnosti príkazového riadku sú obmedzené, t.j. Nebudeme schopní napísať nejakú zložitú logiku, aby sme niečo zautomatizovali, a aj keby to bolo možné, bude to vyžadovať čas a znalosti.

Nevýhodou príkazového riadku je aj to, že na plnohodnotnú správu servera používame rôzne konzolové utility softvérových produktov, a preto je použitie príkazového riadku na administráciu skutočne náročné z toho hľadiska, že všetky tieto utility majú rozdielne syntax, parametre, spôsoby použitia a za účelom vykonávania typických úloh, t.j. každý deň si toto všetko musíte uchovávať v pamäti a na vykonávanie atypických úloh si musíte najskôr prečítať pomocníka alebo dokumentáciu.

Technológia Windows Script Host umožňuje vykonávať všetky administratívne úlohy ako príkazový riadok, vrátane ich automatizácie písaním WSH skriptov, no tu už môžeme využívať plnohodnotné programovacie jazyky ​​( VBScript a JScript), t.j. je možné implementovať komplexnú logiku a algoritmy. Navyše s pomocou WSH spravujeme softvérové ​​produkty cez objektové rozhranie, inými slovami, Windows Script Host je oveľa viac “ chladič» ako príkazový riadok. Táto technológia sa však tiež nestala ideálnym nástrojom na správu a automatizáciu tejto správy pre systémových administrátorov, keďže Windows Script Host vyžadoval znalosť vyššie uvedených programovacích jazykov, čo je pre systémových administrátorov vlastne nadbytočné. Administrátorom stačí jednoduchý administračný nástroj s možnosťou naprogramovania niektorých akcií a nechce sa im vŕtať v objektových modeloch softvérových produktov v programovacích jazykoch VBScript a JScript.

Výsledkom bolo, že Microsoft potreboval vyvinúť administračný nástroj pre systémových administrátorov, ktorý by na 100 percent uspokojil všetky potreby systémových administrátorov, a to z hľadiska administrácie a možností automatizácie, ako aj z hľadiska pohodlia a jednoduchosti používania, a tak sa objavil Windows PowerShell.

Čo je Windows PowerShell?

Windows PowerShell je skriptovací jazyk a príkazový shell Windows určený na správu a konfiguráciu operačných systémov Windows. PowerShell je postavený na CRL frameworku a .NET Framework a na rozdiel od príkazového riadka, ktorý prijíma a vracia text, Windows PowerShell pracuje s objektmi. Každý objekt v PowerShell má vlastnosti a metódy, ktoré môžete použiť na manipuláciu s týmito objektmi.

V prostredí Windows PowerShell vyvinula spoločnosť Microsoft koncept cmdlet ( cmdlet), čo je systém pomenovávania príkazov " Sloveso-podstatné meno" Tento systém umožňuje správcom systému rýchlo zvládnuť a zjednodušiť prácu s PowerShell.

Pomocou prostredia Windows PowerShell môžete:

  • Prístup k súborovému systému;
  • Spravovať register;
  • Spravovať služby;
  • Riadiť procesy;
  • Nakonfigurujte operačný systém;
  • Inštalácia softvéru;
  • Inštalácia serverových rolí a komponentov;
  • Spravovať a konfigurovať roly a komponenty servera;
  • Píšte a používajte skripty na automatizáciu správy a správy;
  • Vykonajte ďalšie úlohy správcu systému.

Windows PowerShell obsahuje mnoho bežne používaných pomôcok a príkazov, ktoré môžete spustiť z príkazového riadku, ako napríklad ipconfig, ping a iné. Bolo to urobené s cieľom uľahčiť prechod správcov systému z príkazového riadka na PowerShell.

Pre pohodlie má veľa často používaných príkazov a pomôcok v PowerShell synonymá ( Alias), napríklad cls je synonymom pre cmdlet Clear-Host, dir je synonymom pre Get-ChildItem ( úplný zoznam synoným je možné zobraziť spustením cmdlet Get-Alias ​​​​).

Na zjednodušenie hľadania požadovaného príkazu má PowerShell špeciálny cmdlet Get-Command, pomocou ktorého môžete vyhľadávať podľa slovesa aj podstatného mena. Všetky príkazy v prostredí Windows PowerShell sú zoskupené do modulov ( napríklad Hyper-V, NetTCPIP), čo tiež uľahčuje nájdenie správneho príkazu.

Po nájdení požadovaného príkazu si môžete pozrieť návod na prácu s týmto príkazom, t.j. help, na tieto účely existuje špeciálny cmdlet Get-Help, napríklad nasledujúci príkaz zobrazí pomoc pre cmdlet Get-Command:

Get-Help Get-Command

Pomocník v prostredí Windows PowerShell môže byť krátky, podrobný ( parameter -Podrobné), plný ( parameter -Plná) a tiež môžete zobraziť iba príklady ( parameter - Príklady). Nasledujúci príkaz zobrazí iba príklady použitia cmdlet Get-Command:

Get-Help Get-Command -Príklady

Pomocník PowerShellu je aktualizovateľný, t.j. môže byť aktualizovaný pomocou príkazu Update-Help.

Verzie prostredia Windows PowerShell

Prvá verzia PowerShell 1.0 sa objavila 14. novembra 2006 a bola vydaná ako samostatná distribúcia, ktorú bolo možné nainštalovať na nasledujúce verzie operačných systémov Windows: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1 a Windows Vista.

V systéme Windows Server 2008 sa PowerShell 1.0 objavil ako súčasť, ktorá sa tiež musela nainštalovať.

Počnúc Windows 7 a Windows Server 2008 R2 prichádza PowerShell ako integrálna súčasť systému ( tie. predinštalovaný, nie je potrebné ho inštalovať). Nižšie je uvedená tabuľka zhody medzi verziou PowerShell a verziou operačného systému Windows ( tie. aká verzia prostredia PowerShell je predvolene nainštalovaná v ktorej verzii systému Windows):

Verzia PowerShell Verzie systému Windows
PowerShell 2.0 Windows 7, Windows Server 2008 R2
PowerShell 3.0 Windows 8, Windows Server 2012
PowerShell 4.0 Windows 8.1, Windows Server 2012 R2
PowerShell 5.0 Windows 10, Windows Server 2016

S každou novou verziou sa PowerShell stáva čoraz výkonnejším nástrojom na správu, pre porovnanie, prvý PowerShell mal asi 130 cmdletov a v PowerShell 5.0 ich je už viac ako 600!

Aktuálnu verziu prostredia PowerShell môžete zistiť pomocou vlastnosti PSVersion vstavanej premennej $PSVersionTable, napríklad spustite nasledujúci príkaz:

$PSVersionTable.PSVersion

Alebo spustite cmdlet

Get-Variable -Name PSVersionTable -ValueOnly

kde hodnota PSVersion bude verzia prostredia PowerShell.

jazyk PowerShell

PowerShell je objektovo orientovaný skriptovací programovací jazyk. Používa sa na písanie príkazov na ovládanie všetkých komponentov operačného systému Windows v prostredí Windows PowerShell a na písanie skriptov na automatizáciu administratívnych úloh v integrovanom skriptovacom prostredí Windows PowerShell (ISE). Aj keď bol jazyk PowerShell vytvorený pre úlohy správy, je to plnohodnotný skriptovací programovací jazyk, pretože má programové konštrukcie, ktoré sú prítomné v každom programovacom jazyku, ako sú: podmienky, cykly, spracovanie chýb, práca s premennými, objektmi a polia.

Jazyk PowerShell má jednotnú syntax pre písanie príkazov a štruktúru pomenovania pre tieto príkazy založenú na princípe „ Sloveso-podstatné meno“, vďaka čomu je tento jazyk intuitívny pre programátorov aj správcov systému.

Windows PowerShell

Windows PowerShell je prostredie na vykonávanie príkazov a skriptov v PowerShell. Tento shell má rovnaké možnosti ako príkazový riadok, ako napríklad: ukladanie histórie vykonávania príkazov, prispôsobenie vzhľadu shellu, dokončenie vykonávania príkazu pomocou kombinácie kláves Ctrl+C, ako aj mnoho ďalších funkcií, ktoré nie sú prítomné v shell príkazového riadku, napríklad taká úžasná funkcia ako " zvýraznenie syntaxe» ( predstavený v PowerShell 5.0).

PowerShell môžete spustiť niekoľkými spôsobmi, napríklad:

  • Z príkazového riadku zadaním PowerShell;
  • Cez dialógové okno " Vykonať» ( klávesová skratka Win+R), tiež zadaním PowerShell;
  • V systéme Windows 7 - Štart->Všetky programy -> Príslušenstvo -> Windows PowerShell -> Windows PowerShell;
  • V systéme Windows 8.1 alebo Windows Server 2012 R2 - Štart->Všetky programy -> Systémové nástroje -> Windows PowerShell;
  • V systéme Windows 10 alebo Windows Server 2016 - Štart-> Všetky programy -> Adresár Windows PowerShell ( v skupine W) -> Windows PowerShell.

Príklad spustenia prostredia PowerShell v systéme Windows Server 2016

Snímka obrazovky PowerShell v systéme Windows Server 2016

Rutiny v prostredí PowerShell

Cmdlet (cmdlet) je príkaz prostredia Windows PowerShell, ktorý umožňuje interakciu s objektmi operačného systému a ich správu. Tieto príkazy sú súčasťou jazyka PowerShell. Cmdlety sú zostavené podľa princípu „ Sloveso-podstatné meno", oddelené pomlčkou (-); inými slovami, najprv naznačíme, čo máme robiť, a pomlčkou označujeme, čo máme robiť. Napríklad cmdlet Get-Help, kde Get je sloveso s významom „ Získajte"a Pomoc je podstatné meno" Pomoc"v kontexte PowerShell" Zobraziť – Pomoc" Rutiny prostredia PowerShell vracajú výsledky ako objekty, čo je jeden z hlavných rozdielov oproti príkazovému riadku systému Windows, v ktorom príkazy vracajú na obrazovku iba text.

Okrem cmdletov na získavanie údajov (Get) existujú aj typy cmdletov, ako napríklad:

  • Pridať – pridanie údajov;
  • Jasné – jasné;
  • Povoliť – povoliť;
  • Zakázať – vypnúť;
  • Nové – vytvoriť;
  • Odstrániť – odstrániť;
  • Set – set;
  • Štart - štart;
  • Stop – stop;
  • Export – export;
  • Import – import;
  • A mnoho ďalších.

Úplný zoznam cmdlet v prostredí Windows PowerShell je možné zobraziť pomocou špeciálneho cmdlet Get-Command. Spustite ho napríklad s parametrom cmdlet -CommandType, v dôsledku čoho sa na obrazovke zobrazí zoznam cmdlet.

Get-Command -CommandType cmdlet

Ako ste už pochopili, cmdlet majú parametre, pomocou ktorých môžeme špecifikovať akcie cmdlet. Parametre môžu byť povinné alebo voliteľné, napríklad cmdlet Get-Command nemá žiadne požadované parametre.

Obrázok nižšie ukazuje spôsob, ako vyhľadať cmdlet podľa slovesa ( Parameter slovesa). V tomto prípade sme zobrazili zoznam cmdletov, ktoré môžu niečo reštartovať.

Tím

Get-Command -Sloves Reštart

Ak chcete vyhľadať cmdlet podľa podstatného mena, musíte použiť parameter Noun. Napríklad nižšie máme zoznam cmdletov, ktoré pracujú so službami.

Tím

Get-Command -Noun Service

Ak nenájdete požadovaný cmdlet pod jeho celým názvom, môžete použiť masku vo formáte *Text*.

Pipeline v PowerShell

Jednou z hlavných funkcií prostredia Windows PowerShell je možnosť používať kanál pri vykonávaní príkazov.

Dopravník– ide o prenos výsledku cmdletu cez zvislú čiaru (|) do iného cmdletu. Zároveň, ako si pamätáte, v rutinách cmdlet PowerShell pracujú s objektmi a vracajú objekty; podľa toho sa objekty prenášajú aj pozdĺž potrubia.

Pomocou potrubia môžete vykonávať zložité úlohy jednoduchým a pohodlným spôsobom bez potreby písať zložité algoritmy a skripty.

Zistime napríklad názov najväčšieho súboru v adresári "C:\Windows\System32" ( jednoduchý príklad potrubia).

Tím

Get-ChildItem -Cesta "C:\Windows\System32" -Súbor | Triediť-Dĺžka objektu -Zostupne | Vyberte objekt - prvý 1

  • Get-ChildItem – cmdlet na získanie objektov v zadanom adresári;
  • Sort-Object je cmdlet na triedenie objektov, v našom prípade triedime podľa veľkosti súboru ( dĺžka - zostupne);
  • Select-Object je cmdlet na výber požadovaných vlastností objektu, v našom prípade zobrazujeme štandardné polia a len úplne prvý objekt, t.j. veľký súbor ( parameter - Prvý 1).

Všetky cmdlety sú od seba oddelené zvislou čiarou. Výsledok každého cmdletu sa odovzdá ako vstup do iného cmdletu, t.j. najprv získame všetky objekty v zadanom adresári, potom zoradíme výsledok a nakoniec vyberieme úplne prvý objekt.

Vykonávanie úloh na pozadí

Windows PowerShell má schopnosť spúšťať úlohy na pozadí, čo je mechanizmus, pomocou ktorého môžete spustiť príkaz ( napríklad, ktorého dokončenie trvá dlho) na pozadí, t.j. po spustení sa vrátite do aktuálnej relácie a môžete pokračovať v práci bez čakania na dokončenie príkazu. Túto funkciu budete potrebovať, keď potrebujete spustiť príkaz, ktorého dokončenie trvá pomerne dlho, a ako viete, počas tejto doby je relácia PowerShell zablokovaná, kým sa príkaz nedokončí, a musíte pokračovať v práci.

Môžete spravovať všetky úlohy, ktoré sú spustené na pozadí, napríklad zobraziť zoznam úloh, zastaviť úlohu, odstrániť úlohu a samozrejme zobraziť výsledok úlohy.

Windows PowerShell obsahuje nasledujúce rutiny cmdlet na prácu s úlohami na pozadí:

  • Start-Job – spustenie úlohy na pozadí;
  • Stop-Job – zastavenie úlohy na pozadí
  • Get-Job – zobrazenie zoznamu úloh na pozadí;
  • Receive-Job – zobrazenie výsledku úlohy na pozadí;
  • Remove-Job – odstránenie úlohy na pozadí;
  • Wait-Job – presuňte úlohu na pozadí do popredia, aby ste počkali na jej dokončenie.

Ak chcete spustiť na pozadí, musíte napísať príkaz Start-Job a v zložených zátvorkách () príkaz alebo skupinu príkazov, ktoré chcete spustiť na pozadí.

Spustite napríklad nejakú úlohu ( zobraziť zoznam služieb) na pozadí, potom sa pozrite na zoznam úloh na pozadí a zobrazte výsledok našej úlohy ( tie. zoznam služieb).

Spustite úlohu na pozadí

Start-Job (Get-Service)

Pozeráme sa na zoznam úloh spustených na pozadí

Zobrazenie výsledku úlohy 1

Receive-Job Job1

Ako vidíte, teraz máme úlohu so stavom „ Dokončené“, t.j. už je to hotové ( Get-Service funguje rýchlo).

Aby ste videli výsledok úlohy na pozadí, t.j. Get-Service cmdlet, vykonali sme príkaz Receive-Job a odovzdali sme mu názov úlohy ( možná je aj hodnota identifikátora). V dôsledku toho sme zobrazili zoznam služieb.

Diaľkové ovládanie pomocou PowerShell

Windows PowerShell je určený nielen na lokálne použitie, ale aj na vzdialené vykonávanie príkazov. Táto funkcia je potrebná na to, aby ste mohli zo svojho pracoviska ovládať vzdialené počítače, t.j. spustiť príkazy PowerShell.

Existuje niekoľko spôsobov diaľkového ovládania:

  • Pomocou parametra – Názov počítača (veľa tímov to má). Inými slovami, zadáte ako parameter názov počítača, na ktorom chcete príkaz vykonať. Metóda má nevýhodu v tom, že je obmedzená na vykonanie jedného príkazu;
  • Používanie relácií. Cmdlet Enter-PSSession (interaktívna relácia). Týmto spôsobom sa pripojíte k vzdialenému počítaču a všetky príkazy, ktoré zadáte v PowerShell, sa vykonajú na vzdialenom počítači rovnakým spôsobom, ako keby ste príkazy zadávali priamo na vzdialenom počítači. Metóda má tiež nevýhodu, že relácia je obmedzená na jeden počítač;
  • Pomocou cmdlet Invoke-Command. Pomocou tejto metódy môžete spúšťať príkazy alebo skripty na jednom alebo viacerých počítačoch.

Napríklad na pripojenie k vzdialenému počítaču ( v príklade nižšie ServerName) v interaktívnej relácii spustite nasledujúci príkaz:

Zadajte názov servera PSSession

Skripty, funkcie a moduly v prostredí Windows PowerShell

Ak ste napísali algoritmus, pravdepodobne ho budete chcieť uložiť, aby ste ho mohli použiť v budúcnosti. Windows PowerShell má na tento účel mechanizmus skriptovania.

Podstata tohto mechanizmu je nasledovná: napíšete sadu príkazov, ktoré potrebujete a uložíte ju ako skript - ide o jednoduchý textový súbor s príponou .PS1.

Potom, ak chcete spustiť tento skript, jednoducho ho spustíte v PowerShell. V tomto prípade musíte buď zadať úplnú cestu k súboru skriptu, alebo prejsť do adresára so skriptom a nazvať ho menom.

Dôležité!

V predvolenom nastavení je spúšťanie skriptov v systéme Windows zakázané! Ak chcete zobraziť politiku vykonávania skriptu, spustite rutinu cmdlet Get-ExecutionPolicy. V dôsledku toho vráti aktuálnu politiku, napríklad:

  • Obmedzené – vykonávanie akýchkoľvek skriptov je zablokované ( predvolená hodnota);
  • AllSigned – je povolené vykonávanie skriptov, ktoré majú digitálny podpis;
  • RemoteSigned – spúšťanie lokálnych skriptov je povolené, všetky stiahnuté skripty musia mať digitálny podpis;
  • Neobmedzené – spustenie akýchkoľvek skriptov je povolené ( neodporúča sa, pretože je to nebezpečné!).

Ak chcete povoliť spúšťanie skriptov, musíte použiť cmdlet Set-ExecutionPolicy s jedným z vyššie uvedených parametrov.

Ak chcete napríklad povoliť spúšťanie lokálnych skriptov, spustite nasledujúci príkaz a potvrďte zmeny stlačením Y.

Set-ExecutionPolicy RemoteSigned

Parametre môžete odovzdať skriptu, nastaviť ich ako povinné alebo nastaviť predvolenú hodnotu.

Windows PowerShell poskytuje mechanizmus na vytváranie vlastných funkcií, ktoré možno podobne ako vstavané cmdlety použiť v prostredí PowerShell.

Ak to chcete urobiť, musíte zadať kľúčové slovo Function a potom napísať algoritmus na obsluhu tejto funkcie v zložených zátvorkách (), t.j. sada príkazov ( napríklad nejaký často používaný postup: vytvoriť používateľa s určitými právami, vyčistiť určité adresáre atď). Potom je potrebné všetko uložiť do skriptu, ale iba s príponou .psm1, pretože tento súbor už bude modul.

To nie je všetko, tento súbor musí byť umiestnený v adresári, kde PowerShell hľadá moduly. Existuje niekoľko takýchto adresárov ( špeciálny adresár v užívateľskom profile, adresár, kde je nainštalovaný PowerShell), možno ich zobraziť v premenných prostredia PowerShell. Ak to chcete urobiť, spustite nasledujúci príkaz

Get-ChildItem Env:\PSModulePath | Formát-tabuľka -Automatická veľkosť

Po umiestnení modulu, ktorý ste napísali, do špeciálneho adresára, môžete pristupovať k svojim funkciám ako bežné príkazy PowerShell.

Integrované skriptovacie prostredie Windows PowerShell (ISE)

Aby bolo možné pohodlne písať skripty, funkcie a podľa toho aj moduly, spoločnosť Microsoft vyvinula špeciálny grafický program Integrované skriptovacie prostredie(ISE) - Integrované skriptovacie prostredie. Je veľmi pohodlné pracovať v tomto programe a má tiež výkonnú funkčnosť ( vytváranie viacerých kariet so skriptami, výstupná oblasť, vstavaný debugger a ďalšie).

Môžete to spustiť takto:

  • V systéme Windows 7 - Štart -> Všetky programy -> Príslušenstvo -> Windows PowerShell -> Windows PowerShell ISE;
  • V systéme Windows 10 alebo Windows Server 2016 - Štart-> Všetky programy -> Adresár Windows PowerShell ( v skupine W) -> Windows PowerShell ISE.

Poznámka! ISE nebude fungovať na systéme Windows Server nainštalovanom vo vydaní Server Core.

Snímka obrazovky integrovaného skriptovacieho prostredia PowerShell (ISE) v systéme Windows Server 2016

To je pre mňa všetko, dúfam, že materiál bol pre vás užitočný! Veľa štastia!

Windows PowerShell je jedným z dôležitých nástrojov v rukách správcu systému Windows. PowerShell je výkonný nástroj, ktorý netreba zanedbávať. Cieľom tohto článku je poskytnúť základné zručnosti v prostredí Windows PowerShell.

PowerShell je viac než len shell príkazového riadku. Prvá verzia PowerShell sa objavila v roku 2006, dôvodom jej vývoja bola primitívnosť klasického príkazového riadku Windows, ktorý neumožňoval vykonávanie zložitých algoritmov.

Windows PowerShell je predinštalovaný na Windows 7, 8, 8.1 a Windows Server 2008 R2, 2012 R2 a možno ho pridať aj do Windows XP SP3, Vista a Windows Server 2003 SP2. Rozhranie PowerShell pripomína známe rozhranie príkazového riadka.


Rozhranie Windows PowerShell

Ako bolo uvedené vyššie, záležitosť sa neobmedzuje len na rozhranie príkazového riadku. PowerShell poskytuje správcovi systému vlastný skriptovací jazyk, ktorý vám umožňuje automatizovať zložité akcie.

Príkazy, ktoré spúšťate v prostredí PowerShell, môžu byť vo forme cmdletov, funkcií, skriptov a externých spustiteľných súborov.

Cmdlets je nový typ príkazu zabudovaný do prostredia PowerShell. Príkazy tohto typu sa skompilujú do dll knižníc a pri spustení sa načítajú do procesu PowerShell. Samotné cmdlety sa nespúšťajú ako aplikácie.

Názvy rutiny sa zhodujú so vzorom "sloveso-podstatné meno". Sloveso popisuje akciu, ktorú chceme vykonať, a podstatné meno popisuje objekt, na ktorom sa akcia vykoná. Ak chcete napríklad vymazať obrazovku konzoly, musíte zadať príkaz Clear-Host. Dostupné príkazy môžete zobraziť zadaním Get-Command na konzole.

Rutiny cmdlet môžu mať parametre. Vo všeobecnosti to vyzerá takto:

názov_cmdlet -parameter1 -parameter2 argument1 argument2

Argumenty sú parametre, ktoré nemajú mená.

Ako to funguje? Máme napríklad príkaz dir, ktorý zobrazuje obsah adresára.

Príklad príkazu dir

Povedzme, že som stratil určitý súbor. Nech je to súbor pomocníka Photoshopu. Pamätám si, že názov súboru obsahuje „photoshop“ a že je to súbor pdf. Pokiaľ si pamätám, súbor je v tomto adresári. Môžem vypísať všetky súbory v adresári ako v príklade vyššie a súbor vyhľadať manuálne. Alebo môžem použiť parameter -filter, ktorý zobrazí iba tie súbory, ktoré zodpovedajú konkrétnemu argumentu. Argument bude *photoshop*.pdf . Okolo slova „photoshop“ sú hviezdičky, pretože si nepamätám presný názov súboru a hovorím PowerShellu, že pred a za slovom „photoshop“ môžu byť akékoľvek znaky. Tiež vám hovorím, aby ste hľadali súbor pdf.

Takže súbor, ktorý ste hľadali, sa našiel. Vo všeobecnom pohľade na cmdlet bolo uvedené, že jeden cmdlet môže mať niekoľko parametrov. Na druhej strane, parametre nemajú vždy argumenty.

Poďme si náš príklad trochu skomplikovať. Povedzme, že teraz potrebujem nájsť knihu od Christophera Doughertyho. Tím dir -filter *dougherty*.pdf nič mi nedal. To znamená, že kniha nie je v tomto adresári, ale určite si pamätám, že je niekde tu, samozrejme v podadresároch. Pre vyhľadávanie v podadresároch pridáme parameter -recurse.

Hľadanie bude trvať trochu dlhšie, ale kniha, ktorú hľadáte, sa nájde.

Ako vidíte, parameter -recurse neobsahuje argument. Samotné parametre môžu byť v ľubovoľnom poradí, hlavnou vecou je prísne dodržiavať logiku, keď požadovaný argument prichádza za parametrom, pre ktorý je určený. Takže príkaz dir -filter *dougherty*.pdf -rekurz bude fungovať úplne rovnako ako dir -recurse -filter *dougherty*.pdf.

Názvy parametrov je možné písať v skrátenej forme, čo je celkom vhodné pre každodennú prácu s príkazovým riadkom. Skratka musí byť pre tlmočníka zrozumiteľná, t.j. nepripúšťajú dvojité výklady. Napríklad môžeme skrátiť parameter -recurse na jednoduché -r a skrátenie -filter na -f spôsobí chybu, pretože Existuje aj parameter -force. V tomto prípade môžete -filter skrátiť na -fi .

Takže teraz máme predstavu o cmdletoch. Nabudúce .