Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce

Historicky byly nástroje příkazového řádku v unixových systémech vyvinuty lépe než v systému Windows, ale s příchodem nového řešení se situace změnila.

Windows PowerShell umožňuje systémovým administrátorům automatizovat většinu rutinních úloh. Pomocí ní je možné měnit nastavení, zastavovat a spouštět služby, a také provádět údržbu většiny nainstalovaných aplikací. Vnímat modré okno jako další příkazový interpret by bylo nesprávné. Takový přístup neodráží podstatu inovací nabízených společností Microsoft. Ve skutečnosti jsou možnosti Windows PowerShell mnohem širší: v několika krátkých článcích se pokusíme porozumět tomu, čím se řešení Microsoftu liší od pro nás běžnějších prostředků.

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce

Hlavní funkce 

Samozřejmě Windows PowerShell je především příkazová schránka s jazykem skriptování, původně vytvořená na základě platformy .NET Framework a později – na .NET Core. Na rozdíl od schránek, které přijímají a vracejí textová data, Windows PowerShell pracuje s třídami .NET, které mají vlastnosti a metody. PowerShell umožňuje vykonávat běžné příkazy a také poskytuje přístup k objektům COM, WMI a ADSI. Využívá různé úložiště, jako je souborový systém nebo registr Windows, pro jejichž přístup byly vytvořeny tzv. poskytovatelé (providers). Je třeba zmínit možnost včlenění spustitelných komponentů PowerShell do jiných aplikací pro provádění různých operací, včetně prostřednictvím grafického rozhraní. Platí to i naopak: mnoho aplikací pro Windows poskytuje přístup k jejich rozhraním pro správu prostřednictvím PowerShell. 

Windows PowerShell umožňuje:

  • Měnit nastavení operačního systému;
  • Spravovat služby a procesy;
  • Konfigurovat role a komponenty serveru;
  • Instalovat software;
  • Spravovat nainstalovaný software prostřednictvím speciálních rozhraní;
  • Včleňovat spustitelné komponenty do cizích programů;
  • Vytvářet skripty pro automatizaci administrativních úloh;
  • Pracovat se souborovým systémem, registrem Windows, úložištěm certifikátů atd.

Schránka a vývojové prostředí

Windows PowerShell existuje ve dvou podobách: kromě emulátoru konzole s příkazovým řádkem je zde integrované prostředí skriptování (Integrated Scripting Environment — ISE). Pro přístup k rozhraní příkazového řádku stačí vybrat odpovídající zástupce v nabídce Windows nebo spustit powershell.exe z nabídky „Spustit“. Na obrazovce se zobrazí modré okno, které se výrazně liší ve funkcích od zastaralého cmd.exe. Obsahuje automatické doplňování a další funkce, které jsou uživatelům příkazových řádků Unixových systémů dobře známé.

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce

Pro práci s touto siluetou je potřeba si zapamatovat určitá klávesová zkratky:

  • Šipky nahoru a dolů procházejí historií pro opakování dříve zadaných příkazů;
  • Šipka doprava na konci řádku znovu zadává předchozí příkaz po znacích;
  • Ctrl+Home maže zadaný text od pozice kurzoru do začátku řádku;
  • Ctrl+End maže text od kurzoru do konce řádku.

F7 zobrazuje okno s dříve zadanými příkazy a umožňuje vybrat jeden z nich. V konzole je také možné vyznačovat text myší, kopírovat a vkládat, používat umístění kurzoru, mazání, backspace — vše, co máme rádi.

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
Windows PowerShell ISE je plnohodnotné vývojové prostředí s editorem kódu podporujícím karty a syntaktické zvýraznění, konstruktor příkazů, integrovaný ladící nástroj a další programátorské radosti. Pokud v editoru vývojového prostředí napíšete za názvem příkazu pomlčku, zobrazí se vám v rozbalovací nabídce všechny dostupné parametry s uvedením typu. PowerShell ISE lze spustit buď prostřednictvím zástupce v systémové nabídce, nebo pomocí spustitelného souboru powershell_ise.exe.

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce

Cmdlety 

Ve Windows PowerShell se objevily tzv. cmdlety (cmdlets). Jedná se o specializované třídy .NET, které obsahují různé funkce. Pojmenovávají se podle principu „Akce-Objekt“ (nebo „Sloveso-Podstatné jméno“, pokud se vám to více líbí), přičemž propojení oddělené pomlčkou připomíná predikát a subjekt ve větách přirozených jazyků. Například Get-Help doslovně znamená „Získat-Pomoc“ nebo v kontextu PowerShellu: „Zobrazit-Nápovědu“. V podstatě to odpovídá příkazu man v Unixových systémech, a manuály v PowerShellu by měly být vyhledávány tímto způsobem, nikoli voláním cmdletů s klíčem —help nebo \/?. Nezapomeňte také na online dokumentaci k PowerShellu: ta od Microsoftu je poměrně podrobná.

Kromě Get se v cmdletech pro označení akcí používají i další slova (a nejen slova, striktně vzato). V níže uvedeném seznamu uvedeme několik příkladů:

Přidat — přidat;
Clear — vyčistit;
Enable — zapnout;
Disable — vypnout;
Nové — vytvořit;
Remove — odstranit;
Set — nastavit;
Spustit — spustit;
Stop — zastavit;
Export — exportovat;
Importovat — importovat.

Existují systémové, uživatelské a volitelné cmdlety: v důsledku vykonání všechny vracejí objekt nebo pole objektů. Na velká písmena nejsou citlivé, t.j. z pohledu interpretu příkazů nezáleží na rozdílu mezi Get-Help a get-help. Pro oddělení se používá symbol ‘;’, ale ten je nutno použít pouze pokud se na jednom řádku provádí několik cmdletů. 

Cmdlety Windows PowerShell jsou seskupeny do modulů (NetTCPIP, Hyper-V atd.), a pro vyhledávání po objektu a akci existuje cmdlet Get-Command. Zobrazit nápovědu k němu lze takto:

Get-Help Get-Command

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce

Výchozí příkaz zobrazuje stručnou nápovědu, ale do cmdletů lze v případě potřeby předat parametry (argumenty). S jejich pomocí lze například získat podrobné (parameter -Detailed) nebo úplné (parameter -Full) informace, a také zobrazit příklady (parameter -Examples):

Get-Help Get-Command -Examples

Nápověda ve Windows PowerShell se aktualizuje cmdletem Update-Help. Pokud se příkaz stává příliš dlouhým, lze argumenty cmdletu přenést na další řádek tak, že napíšete speciální znak ‘`’ a stisknete Enter — jednoduše dokončit příkaz na jednom řádku a pokračovat na druhém není možné.

Níže uvedeme několik příkladů běžných cmdletů: 

Get-Process — zobrazit spuštěné procesy v systému;
Get-Service — zobrazit služby a jejich stav;
Get-Content — zobrazit obsah souboru.

Pro často používané cmdlety a externí nástroje existují ve Windows PowerShell krátké synonymy — aliasy (z anglického Alias). Například dir — alias pro Get-ChildItem. V seznamu synonym jsou i ekvivalenty příkazů z Unixových systémů (ls, ps atd.), a cmdlet Get-Help je volán příkazem help. Úplný seznam synonym lze zobrazit pomocí cmdletu Get-Alias:

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce

Skripty, funkce, moduly a jazyk PowerShell

Skripty Windows PowerShell se ukládají jako obyčejné textové soubory s příponou .ps1. Nelze je spustit dvojitým kliknutím: je potřeba kliknout pravým tlačítkem myši a vybrat možnost „Spustit v PowerShell“. Z konzole je třeba buď uvést celou cestu k skriptu, nebo přejít do příslušného adresáře a napsat název souboru. Spuštění skriptů je také omezeno systémovou politikou, a pro ověření aktuálního nastavení lze použít cmdlet Get-ExecutionPolicy, který vrátí jednu z následujících hodnot:

Restricted — spuštění skriptů je zakázáno (defaultně);
AllSigned — povoleno pouze spuštění podepsaných skriptů od důvěryhodného vývojáře;
RemoteSigned — povoleno spuštění podepsaných a vlastních skriptů;
Unrestricted — povoleno spuštění jakýchkoli skriptů.

Administrátor má dvě možnosti. Nejbezpečnější varianta předpokládá podepisování skriptů, ale to je poměrně složitá záležitost — tím se budeme zabývat v následujících článcích. Teď půjdeme cestou nejmenšího odporu a změníme politiku:

Set-ExecutionPolicy RemoteSigned

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
PowerShell proto bude potřeba spustit jako správce, i když pomocí speciálního parametru lze změnit politiku i pro aktuálního uživatele.

Skripty se píší v objektově orientovaném programovacím jazyce, jehož příkazy se nazývají stejným způsobem jako výše zmíněné cmdlety: „Akce-Objekt“ („Sloveso-Podstatné jméno“). Jeho hlavním účelem je automatizace administrativních úloh, ale je to plnohodnotný interpretovaný jazyk, ve kterém jsou všechny potřebné konstrukce: podmínkový přechod, smyčky, proměnné, pole, objekty, zpracování chyb atd. Pro psaní skriptů je vhodný jakýkoli textový editor, ale nejlépe se spouští Windows PowerShell ISE.

Do skriptu lze předávat parametry, dělat je povinnými a také nastavovat výchozí hodnoty. Kromě toho Windows PowerShell umožňuje vytvářet funkce a vyvolávat je přesně tak, jak cmdlety: k tomu se používá konstrukce Function a složené závorky. Skript s funkcemi se nazývá modulem a má příponu .psm1. Moduly musí být ukládány v adresářích definovaných v proměnných prostředí PowerShell. Můžete je zobrazit pomocí následujícího příkazu:

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

Dopravníky

V posledním příkladu jsme použili strukturu známou uživatelům unixových shellů. V systému Windows PowerShell umožňuje svislá čára také předat výstup jednoho příkazu jako vstup do druhého, ale v implementaci dopravníku existuje zásadní rozdíl: zde již nejde o sadu znaků nebo nějaký text. Vložení cmdletů nebo uživatelských funkcí vrací objekty nebo pole objektů a také mohou přijímat je jako vstup. Stejně jako v Bourne shellu a jeho četných následovnících usnadňuje v PowerShellu použití dopravníku provádění složitých úloh.

Nejjednodušší příklad dopravníku vypadá takto:

Get-Service | Sort-Object -property Status

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
Nejprve se vykoná cmdlet Get-Service, a poté se všechny získané služby předají ke třídění podle vlastnosti Status cmdletu Sort-Object. To, do jakého argumentu se výsledek předchozího úseku dopravníku předává, závisí na jeho typu — obvykle je to InputObject. Podrobněji se této otázce budeme věnovat v článku věnovaném programovacímu jazyku PowerShell. 

Pokud si to přejete, můžete řetězec prodloužit a předat výsledek práce Sort-Object dalšímu cmdletu (provádět se budou zleva doprava). Mimochodem, uživatelé Windows mají k dispozici i známou konstrukci pro stránkový výstup: 

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

Spuštění úloh na pozadí 

Často je třeba spustit nějaký příkaz na pozadí, aby se nemuselo čekat na výsledek jeho vykonání v relaci shellu. V Windows PowerShell existuje několik cmdletů pro takové případy:

Start-Job — spuštění úlohy na pozadí;
Stop-Job — zastavení úlohy na pozadí;
Get-Job — zobrazení seznamu úloh na pozadí;
Receive-Job — zobrazení výsledků vykonání úlohy na pozadí;
Remove-Job — odstranění úlohy na pozadí;
Wait-Job — přenos úlohy na pozadí zpět do konzole.

Pro spuštění úlohy na pozadí používáme cmdlet Start-Job a v závorkách uvedeme příkaz nebo sadu příkazů:

Start-Job {Get-Service}

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
S úlohami na pozadí v PowerShellu můžeme manipulovat, pokud známe jejich názvy. Nejprve se naučíme je zobrazit:

Get-Job

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
Nyní ukážeme výsledek práce úlohy Job1:

Receive-Job Job1 | more

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
Všechno je docela jednoduché.

Vzdálené vykonávání příkazů

Windows PowerShell umožňuje spouštět příkazy a skripty nejen na místním, ale také na vzdáleném počítači a dokonce na celé skupině strojů. K tomu existuje několik způsobů:

  • Mnoho cmdletů má parametr -ComputerName, ale tímto způsobem například nelze vytvořit potrubí;
  • Cmdlet Enter-PSSession umožňuje vytvořit na vzdáleném počítači interaktivní relaci; 
  • Pomocí cmdletu Invoke-Command můžete provádět příkazy nebo skripty na jednom nebo několika vzdálených počítačích.

Verze PowerShell

Od prvního vydání v roce 2006 se PowerShell významně změnil. Nástroj je k dispozici pro mnoho systémů na různých hardwarový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. Poslední vydání 6.2 bylo vydáno 10. ledna 2018. Skripty napsané pro starší verze s vysokou pravděpodobností budou fungovat ve verzích novějších, zatímco s přenosností zpět mohou vzniknout problémy, protože během let vývoje se v PowerShellu objevilo velké množství nových cmdletů. Zjistit verzi příkazového shellu nainstalovaného na počítači lze pomocí vlastnosti PSVersion proměnné $PSVersionTable:

$PSVersionTable.PSVersion

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
Můžete také použít cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce
To samé lze udělat pomocí cmdletu Get-Host. Ve skutečnosti existuje mnoho variant, ale pro jejich použití je třeba se naučit programovací jazyk PowerShell, čímž se budeme zabývat v dalším článku. 

Závěry 

Společnosti Microsoft se podařilo vytvořit skutečně výkonný příkazový shell s pohodlným integrovaným prostředím pro vývoj skriptů. Od obvyklých nástrojů, které známe z prostředí Unix, se vyznačuje hlubokou integrací s operačními systémy rodiny Windows a také s jejich softwarem a platformou .NET Core. PowerShell lze nazvat objektově orientovaným shellem, protože cmdlety a uživatelské funkce vracejí objekty nebo pole objektů a mohou je dostávat jako vstup. Domníváme se, že tímto nástrojem by měli disponovat všichni správci serverů na Windows: doba, kdy se mohli obejít bez příkazového řádku, je pryč. Pokročilý příkazový shell je obzvláště potřebný na našich levných VPS běžících pod Windows Server Core, ale to je už úplně jiný příběh.

Co je to Windows PowerShell a jak se používá? Část 1: Hlavní funkce

Pouze registrovaní uživatelé se mohou účastnit ankety. Přihlaste se, prosím.

Jaká témata by měla být nejprve zmíněna v následujících článcích této série?

  • 53,2%Programování v PowerShell123

  • 42,4%Funkce a moduly PowerShell98

  • 22,1%Jak podepisovat své vlastní skripty?51

  • 12,1%Práce s úložišti přes poskytovatele (providers)28

  • 57,6%Automatizace správy počítačů pomocí PowerShell133

  • 30,7%Správa softwaru a integrace spustitelných komponent PowerShell do třetích produktů71

Hlasovalo 231 uživatelů. Zdrželo se 37 uživatelů.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster