Co je skriptování Windows PowerShell?

Zásadní body

  • PowerShell je skriptovací jazyk, který umožňuje automatizaci úloh na počítači.
  • Rutiny představují základní stavební bloky PowerShellu, jsou to jednofunkční příkazy. Seznam dostupných příkazů získáte pomocí „Get-Command“.
  • PowerShell je kompatibilní s operačními systémy Windows, macOS a Linux.

PowerShell se vyznačuje schopností automatizovat počítačové úlohy s vysokou mírou spolehlivosti a jednoduchosti. Následující informace vám pomohou proniknout do tajů skriptování v prostředí Windows.

Základy skriptování v PowerShellu

Chcete-li začít s tvorbou základních skriptů v PowerShellu ve Windows, je nutné se seznámit se třemi klíčovými pojmy:

  • Rutiny: jedná se o příkazy s konkrétní, jednou funkcí.
  • Parametry: specifikují, co, kdy, kde a jak se rutiny/příkazy provádějí.
  • Pipeline (roury): slouží k propojení výstupu jedné rutiny s dalšími rutinami nebo funkcemi.

Kombinací těchto tří prvků lze sestavovat jednoduché skripty, které usnadňují automatizaci různých úkolů.

Následující příklad ukazuje, jak lze propojit několik rutin pro dosažení konkrétního cíle:

Pro spuštění tohoto pipeline v PowerShellu byste použili příkaz podobný tomuto:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
| Place-Object Bowl

Rutiny podrobněji

Stejně jako jiné skriptovací jazyky, i PowerShell nabízí vestavěnou sadu příkazů pro manipulaci s objekty a provádění rozličných úkolů. Tyto základní příkazy se nazývají rutiny.

Rutiny (anglicky vyslovováno jako „command-lets“) jsou krátké, jednofunkční příkazy, které se v prostředí PowerShell používají a mají příponu .dll. Díky své kompilované povaze se jedná o lehké a rychleji vykonatelné části kódu než běžné funkce.

V PowerShellu existují tisíce rutin, není však nutné se je všechny učit. Doporučuje se začít s několika základními rutinami a postupně rozšiřovat své znalosti. Pro zobrazení rutin, které jsou již nainstalovány ve vašem systému, použijte příkaz:

 Get-Command 

Při procházení výsledků si můžete všimnout, že rutiny se řídí konvencí pojmenování sloveso-podstatné jméno. Díky tomu je snadnější pochopit, k čemu daná rutina slouží.

Například rutina Get-Command zobrazí seznam příkazů dostupných v PowerShellu. Rutina Get-Process poskytne přehled aktuálně spuštěných procesů a rutina Copy-Item zkopíruje soubory do zadaného adresáře.

Rutiny jsou obvykle doprovázeny obsáhlou dokumentací, která obsahuje příklady použití, pokyny a podrobný popis jejich funkcí.

Chcete-li se dozvědět více o konkrétní rutině a jejím použití, použijte příkaz:

 Get-Help <název-rutiny> 

Vysvětlení parametrů PowerShellu

Rutiny mohou přijímat parametry, které mění jejich chování. Při spouštění rutiny nebo funkce je možné specifikovat hodnoty parametrů, které určují, jakým způsobem a v jakém kontextu se daný příkaz PowerShellu provede.

Například rutina Get-Process získá a zobrazí seznam všech aktivních procesů v operačním systému:

Co ale když chceme zobrazit pouze konkrétní proces? Toho lze docílit pomocí parametrů. Například pro zobrazení všech procesů s názvem „Slack“ použijeme parametr Name s rutinou Get-Process:

 Get-Process -Name Slack 

Výsledkem budou pouze procesy s názvem „slack“:

Některé parametry jsou „poziční“, což znamená, že jejich název není nutné uvádět. V tomto případě příkazy Get-Process -Name Slack a Get-Process Slack fungují identicky.

Každá rutina akceptuje různé typy parametrů. Pro zobrazení akceptovaných parametrů rutiny je nutné použít příkaz Get-Help a podívat se do sekce SYNTAX.

 Get-Help Get-Process 

Zobrazí se seznam všech možných způsobů spuštění dané rutiny:

V tomto případě rutina Get-Process akceptuje parametry jako Name, Id, ComputerName, Module, FileVersionInfo a další běžné parametry. Symboly v syntaxi mají následující význam:

Symbol

Název

Význam

Prázdný

Parametr nevyžaduje žádný vstup

Spojovník

Označuje název parametru

<>

Lomené závorky

Zástupný symbol pro text

[]

Hranaté závorky

Parametr, který může přijmout jednu nebo více hodnot

{}

Složené závorky

Parametr akceptuje množinu hodnot

Parametry, které vyžadují vstup, obvykle uvádějí datový typ, který vyžadují, například string (textový řetězec), integer (celé číslo), boolean (logická hodnota) nebo DateTime (datum a čas). Například:

 Get-Process [[-Name] <string[]>] 

Znamená, že parametr Name akceptuje jeden nebo více textových řetězců. Naopak:

 Get-Process -Id <int[]> 

Znamená, že parametr Id přijímá jedno nebo více celých čísel.

V dřívějším příkladu s Get-Process jsme použili parametr Name pro zúžení výsledků. Pokud chceme specifikovat ještě konkrétnější proces, můžeme použít parametr Id, který vyžaduje celé číslo, jak je uvedeno v jeho syntaxi.

 Get-Process -Id 3016 

Výsledkem bude zobrazení pouze jednoho procesu:

Vytvoření pipeline

PowerShell zachází se všemi daty jako s objekty. Při tvorbě skriptu tyto objekty procházejí sérií rutin nebo funkcí, které jsou spojeny symbolem svislé čáry ( | ). Správný výběr rutin a jejich logické propojení pomocí pipeline je klíčové pro efektivní skript.

Představme si, že vytváříte skript pro setřídění a zobrazení pěti souborů, které zabírají nejvíce místa v dané složce. Existují sice robustnější způsoby, jak vytvořit skript pro třídění souborů, ale následující jednoduchý příklad je snadno pochopitelný:

V PowerShellu použijeme pipeline, který by vypadal následovně:

 Get-ChildItem -Path "C:\Adresar" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize

Uložení pipeline jako PS1 skriptu

Jakmile máte funkční pipeline, je možné ho uložit jako soubor skriptu s příponou PS1, abyste jej nemuseli při každém použití znovu zapisovat.

Nejjednodušší způsob, jak vytvořit soubor PS1, je vložit skript do textového editoru (např. Poznámkový blok) a uložit soubor s příponou .ps1.

Po vytvoření souboru PS1 jej můžete spustit v PowerShellu pomocí příkazu ./NazevSkriptu.ps1:

Gratulujeme! Nyní umíte vytvářet skripty PowerShell s příponou PS1.

PowerShell je dostupný i pro Linux a macOS

PowerShell je považován za jeden z nejlepších skriptovacích jazyků pro začátečníky. Přestože v minulosti byl dostupný pouze pro Windows, jeho aktualizovaná verze je nyní k dispozici i pro systémy macOS a různé distribuce Linuxu! Díky tomu je PowerShell ještě atraktivnější, jelikož můžete své nabyté znalosti z Windows uplatnit i v jiných operačních systémech.