Myslel som si, že PowerShell je len lepší CMD, a mýlil som sa
Keď som videl všetky tieto skvelé články o tom, aký silný je Powershell v systéme Windows, otvoril som ho, aby som zistil, o čom je ten rozruch. Videl som okno v štýle príkazového riadka so známym riadkom a zistil som, že tomu rozumiem. Len iný príkazový riadok, však? Ukázalo sa (a je to trápne to povedať), že by som mohol raketoplán nazvať rýchlejším lietadlom.
PowerShell nie je vylepšenie príkazového riadku (CMD), ale zásadne odlišný nástroj postavený na inej filozofii. Keď pochopíte, čo to je, uvidíte tento konkrétny príkazový shell úplne inak.
CMD a PowerShell nie sú naozaj rovnaký druh veci
Len vyzerajú podobne, to je všetko
Príkazový riadok je súčasťou skúsenosti s Windows od éry MS-DOS a odvtedy sa vlastne veľa nezmenil. Robí to, čo vždy robil - prijme príkaz, spustí ho a zobrazí výsledný text na obrazovke. PowerShell, ktorý bol predstavený v roku 2006, na prvý pohľad vyzerá podobne, čo bolo zámerom. Príkazy ako dir a cls fungujú aj v PowerShell, ale v skutočnosti sú to aliasy, alebo skratky, ktoré mapujú na skutočné PowerShell príkazy pod nimi. Zadanie dir v PowerShell v skutočnosti spustí Get-ChildItem za scénou. Známý štýl je zdvorilosťou pre ľudí, ktorí prechádzajú z príkazového riadku, ale môže mýliť ľudí ako ja, ktorí sú noví v celom príkazovom riadku vo Windows.
Rozdiel je v tom, čo vám každý nástroj vráti
Jeden vypluje text, druhý ti dá použiteľné dáta
Keď spustíte príkaz v CMD, dostanete text. Keď spustíte príkaz v PowerShelli, dostanete objekt, štruktúrovaný kus dát s pomenovanými poliami, ktoré potom môžete dotazovať. Napríklad, ak požiadate CMD, aby vypísalo vaše súbory, dá vám zoznam, ale s ním nemôžete programovo nič robiť, ako s metaforickým kusom papiera. Ak však požiadate PowerShell, aby vypísal vaše súbory, poskytne vám metaforický ekvivalent tabuľky: každý súbor je riadok, s stĺpcami pre názov, veľkosť, dátum úpravy a ďalšie. Dáta sa dajú okamžite filtrovať alebo triediť.
To ovplyvňuje bežnú funkciu medzi týmito dvoma aplikáciami: pipeline, znak |, ktorý môžete použiť na spojenie príkazov dohromady. V aplikácii Príkazový riadok môže preposielanie potrubím odovzdávať iba text z jedného príkazu do druhého. Je to užitočné, ale nie také výkonné ako v PowerShelli, kde príkaz pipe odovzdáva celý objekt. Nasledujúci príkaz v reťazci získa všetky polia bez potreby čohokoľvek analyzovať.
Príkaz ako Get-Process | Where-Object {$_.CPU -gt 1} | Sort-Object CPU sa prekladá ako „získať všetky bežiace procesy, ponechať iba tie, ktoré používajú viac ako 1 % CPU, a potom ich zoradiť podľa použitia CPU.“ Existujú tri kroky, všetky na jednom riadku, bez potreby analyzovať textový výstup z každého kroku. Tento druh skriptovania v PowerShelli môže byť veľmi silný.
Čo to vlastne umožňuje
PowerShell vám môže ušetriť veľa času
Pre nás, bežných používateľov Windows, sa táto praktická úžitkovosť prejavuje v niekoľkých oblastiach. Predovšetkým uľahčuje automatizáciu hromadného premenovania súborov, vyčistenie dočasných priečinkov, sledovanie miesta na disku a aktualizáciu všetkých nainštalovaných aplikácií jedným príkazom cez winget, a to všetko bez klikania cez grafické rozhrania. Existuje množstvo údržbových úloh, ktoré v PowerShelli trvajú len pár sekúnd. Môžete tiež vykonávať dotazy na svoj vlastný systém spôsobmi, ktoré Správca úloh nedovoľuje, napríklad zistiť presne, ktorý proces spotrebúva príliš veľa RAM, zoznam všetkého, čo sa spustí pri štarte, alebo získať úplný inventár nainštalovaného softvéru.
Ak používate služby Microsoft aj v práci, automatizácia pomocou PowerShellu môže ísť ešte ďalej. Integruje sa priamo s Microsoft 365, Azure, Active Directory, Exchange Online a Teams. Sú to úlohy, ktoré CMD jednoducho nezvládne. Navyše, pretože skripty sú znovupoužiteľné, niečo, čo napíšete raz pre účely správy IT, môže spoľahlivo fungovať na stovkách zariadení.
Už to nie je nástroj iba pre Windows
Je to multiplatformové?
Prekvapujúce pre používateľa Macu, ukazuje sa, že Microsoft sprístupnil PowerShell ako open source a vydal ho v roku 2016 pre macOS a Linux. Verzia PowerShellu zabudovaná vo Windowse 10 a 11 (PowerShell 5.1) je zmrazená a dostáva iba bezpečnostné záplaty, ale žiadne nové funkcie. PowerShell 7 beží na Windows, Mac a Linuxe, je udržiavaný na GitHube a je postavený na .NET Core namiesto staršieho .NET Frameworku.
To umožňuje používateľom Mac v zmiešaných prostrediach spravovať prostriedky Azure, spúšťať rovnaké automatizačné skripty, aké používajú vaši kolegovia na Windowse, a skriptovať cross-platformové pracovné toky bez toho, aby ste museli všetko prepísať pre každý operačný systém. Skúste to s Príkazovým riadkom (spoiler, nemôžete).
Začnite sa učiť viac
Príkaz dir stále funguje aj v PowerShell. Nič vás nenúti meniť spôsob jeho používania na prvý pohľad. Ale teraz, keď viete, čo je pod tým, a chcete začať skúmať, spustite Get-Help v PowerShell, aby ste dobre začali učiť všetky základné príkazy PowerShell.




