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.