Úvod do PowerShellu pro začátečníky na Windows
Když vám zkrátka klikání myší přestane stačit a potřebujete automatizovat.
Úvod do PowerShellu pro začátečníky na Windows
Když jsem začal pracovat na Service Desku, všechno jsem dělal “vyklikáváním”. Potřeboval jsem zjistit sériové číslo (Service Tag) vzdáleného počítače? Našel jsem ho v nějakém asset management nástroji. Chtěl jsem zjistit, jestli má uživatel zamčený účet v Active Directory? Otevřel jsem grafickou konzoli Active Directory Users and Computers (ADUC).
Pak jsem ale zjistil, že pro stejné operace mi stačí jeden příkaz v PowerShellu zadáný za 3 vteřiny, ušetřím 2 minuty načítání neohrabané grafiky programu, a jako bonus můžu ten samý úkol udělat na sto počítačích naráz.
Od příkazové řádky k objektům
Rozdíl mezi starým klasickým příkazovým řádkem (cmd.exe) a PowerShellem je diametrální.
Starý cmd nebo bash v Linuxu berou vše jako text (string). Hledáte informace v textu.
PowerShell vnímá všechno jako objekty. Každý běžící proces není jen rádek písmen, je to plnohodnotný virtuální “balíček” informací, u kterého se můžete zeptat “Kolik zabíráš RAM?” nebo “Jaké je ID tvého spouštěče?”.
Co je to Pipeline (roura)?
Kouzlo PowerShellu spočívá ve znaku | (tzv. pipe/roura, na klávesnici pomocí AltGr + W). Pipeline bere celou krabici informací z prvního příkazu a přepošle ji do příkazu na druhé straně.
graph LR
A[Get-Process<br/>Získej všechny běžící programy] -->|Pošle objekty| B[Where-Object<br/>Filtruj ty co zabírají moc paměti]
B -->|Pošle vyfiltrované| C[Stop-Process<br/>Zabij ty programy!]
style A fill:#a2d2ff,stroke:#333
style B fill:#ffd6a5,stroke:#333
style C fill:#ffadad,stroke:#333
Kdybychom tento diagram přetavili do reálného kódu, bude to jeden řádek:
Get-Process | Where-Object {$_.WorkingSet -gt 500MB} | Stop-Process *(Upozornění: Tohle na svém produkčním stroji nespouštějte, leda byste rádi překvapení).*
Verb-Noun pravidlo
PowerShell používá dokonalé názvosloví. Skoro všechny jeho funkce se skládají z akce (Slovesa) a předmětu (Podstatného jména).
- Chceš číst položku?
Get-Item - Chceš zaparkovat službu?
Stop-Service - Chceš vytvořit nový soubor?
New-Item
Nemusíte si pamatovat prapodivné linuxové zkratky jako ls, grep, nebo awk. Stačí použít hlavu a příkaz Get-Help, který funguje jako offline encyklopedie všech schopností PowerShellu.
Začít psát jednoduché skripty vyžaduje počáteční mentální bariéru, ale jakmile ji prolomíte, už se ke klikání nechcete vracet.