Windows 10 - prostředí PowerShell
Ve Windows 10 Pro a Enterprise naleznete prostředí Windows PowerShell, které je určeno zejména správcům systému a nahrazuje a vylepšuje funkci příkazového řádku (programu Cmd.exe). Můžete provádět stejné akce jako v příkazovém řádku, a díky výkonnému skriptování můžete lépe automatizovat rutinní operace. Jestliže jste si zvykli zjednodušovat správu pomocí dávkových programů nebo jazyků VBScript či JScript, můžete své znalosti skriptování uplatnit i nadále, ale navíc je rozšířit pomocí dalších možností, které poskytuje objektová orientace prostředí PowerShell a základní architektura .NET Framework.
Výhody prostředí Windows PowerShell:
- Integrace s rozhraním .NET Framework – podobně jako tradičnější vývojářské jazyky (C#, Visual Basic) mají příkazy a skripty prostředí PowerShell přístup k bohaté škále prostředků platformy .NET Framework.
- Objektová orientace – všechny příkazy prostředí PowerShell, které generují výstup, vracejí místo neformátovaného textu objekty rozhraní .NET Framework. Výstup jednoho příkazu může sloužit jako vstup druhého (příkazy jsou „zřetězeny“), není nutné zpracovávat text.
- Konzistentní příkazový model – všechny příkazy rozhraní PowerShell používají syntaxi tvořenou kombinací slovesa a podstatného jména, přičemž obě složky jsou odděleny pomlčkou. Všechny rutiny, které načítají informace ze systému, začínají slovem Get. Rutiny pro zápis informací zase vesměs začínají slovem Set. Díky tomuto a jiným obecně platným pravidlům je jazyk snadno srozumitelný a umožňuje rychlé osvojení. Každá rutina má své téma nápovědy, které lze načíst pomocí příkazu get-help název_rutiny. Parametr –Whatif umožňuje testovat účinek rutiny před jejím spuštěním.
- Univerzální možnosti skriptování – skripty prostředí PowerShell jsou textové soubory s příponou PS1, které obsahují příkazy tohoto prostředí. Do skriptů lze zahrnout všechny příkazy, které je možné používat interaktivně. Na druhou stranu lze rovněž interaktivně (tj. mimo kontext skriptů) používat struktury skriptů typu cyklů, větvení a proměnných.
- Zaměření na správce – prostředí PowerShell zahrnuje funkce, které jsou zvláště zajímavé pro správce systému, jako je možnost pracovat se vzdálenými počítači, přistupovat k systémovým prostředkům typu souborů, složek, klíčů registru, událostí a protokolů a spouštět a zastavovat služby.
- Rozšiřitelnost – vývojáři mohou jazyk prostředí PowerShell rozšířit importem modulů, což jsou balíčky příkazů a dalších položek prostředí.
Spuštění prostředí PowerShell
Chcete-li spustit prostředí Windows PowerShell, zadejte do vyhledávacího pole výraz power a v horní části seznamu výsledků by se měla objevit aplikace Windows PowerShell. Nedaleko najdete také 64bitovou a 32bitovou verzi Integrovaného skriptovacího prostředí (ISE) v prostředí Windows PowerShell. Integrované skriptovací prostředí (ISE – Integrated Scripting Environment) je grafické prostředí vybavené více kartami, které je praktické zejména při vývoji a ladění skriptů.


Jak je zřejmé z obrázku, výchozí vzhled prostředí PowerShell se příliš neliší od prostředí klasického příkazového řádku.
Interakce s prostředím PowerShell
Prostředí PowerShell usnadňuje přechod z příkazového řádku pomocí tzv. aliasů. Mapuje příkazy příkazového řádku na své vlastní rutiny pomocí aliasů. Například příkaz dir tedy funguje jako alias rutiny prostředí PowerShell Get-Childitem a příkaz cd slouží jako alias rutiny Set-Location tohoto prostředí. Lze použít i symboly přesměrování, jako je symbol > k odeslání výstupu do souboru a dvojice symbolů >> k připojení výstupu do souboru. Dlouhý výstup je možné zřetězit příkazem More. V prostředí PowerShell můžete vytvořit i své vlastní aliasy, které vám usnadní zadávání často používaných příkazů. Stejně jako příkazový řádek také prostředí PowerShell umožňuje spouštět spustitelné soubory. Příkazem regedit například spustíte nástroj Editor registru a zadáte-li příkaz taskschd, spustí se nástroj Plánovač úloh.
Syntaxe prostředí PowerShell
Syntaxe prostředí PowerShell tvoří sada rutin, jejichž názvy se skládají ze sloves následovaných pomlčkami a podstatnými jmény – jako příklad lze uvést rutinu Start-Service. Za názvem rutiny může následovat jeden nebo více parametrů. Před každým parametrem se zadává mezera a parametry se skládají z pomlčky, po které bezprostředně následuje název parametru a za mezerou hodnota parametru. Například Get-Process -Name iexplore, winword, excel generuje informace o aplikacích Word, Excel a Internet Explorer. Mnoho rutin pracuje s pozičními parametry. K pozičním parametrům patří i parametr –Name rutiny Get-Process. Prostředí PowerShell očekává, že tento parametr bude uveden jako první. Můžete tedy vynechat název parametru –Name a jednoduše uvést názvy procesů, které vás zajímají Get-Process iexplore, winword, excel
Operátor zřetězení ( | ) umožňuje nastavit výstup jedné rutiny jako vstup jiné. Například když rutinu Get-Service zřetězíte s rutinou Format-List, tedy zadáte příkaz Get-Service | Format-List prostředí PowerShell již není omezeno šířkou obrazovky a dokáže zobrazit více vlastností objektu.

Pro vytvoření vícesloupcového seznamu použijte rutinu Format-Wide, pro tabulkový seznam Format-Table. Chcete-li vybrat specifické vlastnosti, které budou generovány, použijte parametr -Property . Například Get-Service | Format-Table -Property name, dependentservices, servicesdependedon generuje tabulku, která obsahuje tři uvedené výčtové vlastnosti.
Pro generování interaktivní grafické tabulky použijte rutinu Out-Gridview. Když zřetězíte výstup s rutinou Out-Gridview, objeví se grafická tabulka, kterou můžete filtrovat, třídit a snadno kopírovat do jiných programů s podporou tabulkových dat, jako je například Excel. Na obrázku vidíte výstup příkazu Get-Process | Select-Object * | Out-Gridview

V tomto příkladu je rutina GetProcess nejdříve zřetězena s příkazem
Select-Object *, protože rutina Out-Gridview na rozdíl od rutiny Format-Table
neposkytuje parametr –Property. Příkaz Select-Object * předá všechny
vlastnosti objektu vráceného rutinou Get-Process rutině Out-Gridview v
další fázi zřetězení. Zobrazením rutiny Out-Gridview lze manipulovat
podobnými postupy, jaké se používají v mnoha jiných programech windows
(vyzkoušejte si vše kliknutím na názvy sloupců, filtr umožní rychlou
orientaci, kritéria zobrazení můžete měnit podle potřeby). Výstup
můžete filtrovat i pomocí rutiny Where-Object. Například
Get-Service | Where-Object {$_.Status -eq "Stopped"}
zobrazí
služby se stavem Stopped. Rutina Sort-Object dovoluje mnoha užitečnými
způsoby setřídit výstup rutiny podle jedné nebo více vlastností
výsledného objektu. Pokud vynecháte parametr –Property, rutina Sort-Object
bude třídit podle výchozí vlastnosti. Například Get-Childitem |
Sort-Object setřídí obraz aktuálního adresáře podle vlastnosti Name,
která je v tomto případě výchozí. Jestliže potřebujete třídit podle
více vlastností, doplňte za parametr –Property seznam oddělený čárkami.
Když zřetězíte rutinu Sort-Object s rutinou Select-Object, můžete
dosáhnout například vrácení největších či nejmenších n položek z
výsledného objektu. Například Get-Process | Sort-Object -Property WS |
Select-Object -Last 10 vrátí procesy s 10 největšími hodnotami vlastnosti
WS (working set). Když místo řetězce –Last 10 uvedete řetězec –First
10, dostanete položky s nejmenšími hodnotami.
Pokud chcete přesměrovat výstup na výchozí tiskárnu, zřetězte jej s rutinou Out-Printer. Jestliže chcete použít jinou než výchozí tiskárnu, zadejte její název uzavřený do uvozovek za název rutiny Out-Printer. Například Get-Content C:\Users\Martina\Documents\CoPress\Pozn.txt | Out-Printer "Microsoft Print To PDF" odešle obsah souboru C:\Users\Martina\Documents\CoPress\Pozn.txt na zařízení s názvem Microsoft Print To PDF.
Používání a vytváření aliasů, usnadnění zápisu příkazů, nápověda
Alias představuje alternativní název rutiny. Kromě aliasů programu
Cmd.exe, obsahuje i mnoho dalších aliasů, které pouze pomáhají při
psaní. Třeba výraz gsv představuje alias názvu rutiny Get-Service. Můžete
také vytvářet své vlastní aliasy. Chcete-li zjistit, které aliasy jsou
aktuálně dostupné (včetně těch, které jste sami vytvořili), zadejte
příkaz get-alias. Pokud vás zajímá, zda je k dispozici alias pro určitou
rutinu, zřetězte rutinu Get-Alias s rutinou Where-Object. Například
Get-Alias | Where-Object { $_.definition -eq "Set-Variable" }
vrátí dva aliasy set a sv. Chcete-li vytvořit nový alias, zadejte příkaz
set-alias název hodnota, kde název označuje alias a hodnota představuje
rutinu, funkci, spustitelný program nebo skript. Například set-alias note
notepad.exe vytvoří alias note, který otevře poznámkový blok. Aliasy,
které vytvoříte, jsou platné pouze pro aktuální relaci. Chcete-li je
zpřístupnit trvale, zahrňte je do svého profilu.
Pro jednoduché operace se systémem souborů (FileSystem) postačují známé příkazy prostředí Cmd.exe, které se používají snáze než příslušné rutiny prostředí PowerShell. Díky integrovaným aliasům nemusíte časem prověřené postupy měnit. PowerShell podporuje známé symboly jedné tečky (.) a dvou teček (..) pro aktuální a nadřazený adresář. Obsahuje také integrovanou proměnnou $Home, která reprezentuje domovský adresář (odpovídá proměnné prostředí HomePath).
Lze zkracovat i názvy parametrů, tak například příkazy Get-Process –name iexplore a Get-Process –n iexplore jsou ekvivalentní. V příkazech lze použít zástupné znaky * a ? a mnoho různých „regulárních výrazů“, které odpovídají znakovým řetězcům. Seznamte se s nimi pomocí příkazu get-help about_regular_expressions.
Uchovává se historie nedávných příkazů, která usnadňuje opakované použití dříve zadaného příkazu. Obsah historie zobrazíte příkazem get-history. Každou položku v historii identifikuje číslo ID. Položku lze na příkazový řádek vyvolat příkazem invoke-history ID.
Prostředí PowerShell obsahuje sadu zprostředkovatelů, které poskytují přístup k různým typům datových úložišť. Zprostředkovatelé jsou programy platformy .NET Framework a jejich data jsou vystavena ve formě jednotek, které připomínají známé jednotky se systémem souborů. Takovými zprostředkovateli je výše zmíněný Alias a FileSystem. Další informace o zprostředkovatelích získáte zadáním příkazu get-help about_providers. Zajímavým zprostředkovatelem je Registry, poskytuje jednotky pro dva podregistry HKLM a HKCU. Pomocí standardní notace cest lze přejít na konkrétní podklíče. Informace o všech podklíčích určitého klíče lze zobrazit rutinou Get-Childitem. Například Get-Childitem -Path hkcu:\software\microsoft vrátí informace o všech podklíčích klíče HKCU:\Software\Microsoft. Informace o práci s registry získáte zadáním příkazu get-help registry.
Pro rutiny Set-Location, Get-Childitem, Move-Item, Copy-Item, Get-Content, New-Item, Remove-Item či Get-Acl jsou k dispozici i užitečné volitelné parametry. Zadáním příkazu get-help název_rutiny získáte informace o používání těchto parametrů. Jsou to například -Credential, -Delimiter, -Encoding a další.
Prostředí PowerShell poskytuje mnoho funkcí, díky nimž se při práci s prostředím můžete učit nové postupy. Informace nápovědy o libovolné rutině zobrazíte zadáním příkazu get-help název_rutiny.
Pokud potřebujete zjistit, která rutina se nejlépe hodí pro daný problém, můžete použít rutinu Get-Command. Doplníte-li jej * (Get-Command *) zobrazí se dlouhý seznam, který obsahuje všechny soubory ve všech složkách, které jsou uvedeny v aktuální proměnné prostředí Path. Přidáním parametru –Noun upřesníte oblast zadání. Například příkaz get-command –noun eventlog. Dostanete názvy a definice rutin Clear-Eventlog, Get-Eventlog, Limit-Eventlog, New-Eventlog, Remove-Eventlog, Show-Eventlog a Write-Eventlog.
Skriptování v prostředí PowerShell
Skript prostředí PowerShell je textový soubor s příponou PS1. Skript můžete vytvořit v libovolném editoru neformátovaného textu [zcela postačí Notepad (Poznámkový blok)], nebo můžete použít Integrované skriptovací prostředí (ISE).
Pokud vás více zajímá prostředí PowerShell a chtěli byste se ho naučit do hloubky, máme na této síti sérii lekcí o PowerShellu.
Více se dozvíte na https://msdn.microsoft.com/…s/powershell
Napsal: Ing Ivan Šereda
Literatura
- Windows 10 Inside Out, Ed Bott, Carl Siechert, Craig Stinson
PUBLISHED BY Microsoft Press A division of Microsoft Corporation One Microsoft Way Redmond, Washington 98052-6399