1. diel - PowerShell pre začiatočníkov
Vitajte v dnešnej úvodnej lekcii kurzu PowerShell frameworku, kde sa zoznámime s hosťom, vysvetlíme si základné pojmy, zoznámime sa s prostredím a ukážeme si jeho čiastočné prispôsobenie. Ďalej si ukážeme, ako začať pracovať s PowerShell na dennej báze, jeho výhody, nevýhody a limity.
Oficiálna definícia
Najskôr si uvedieme oficiálny definíciu PowerShellu:
PowerShell (predtým známy ako Microsoft Shell, Windows PowerShell, MSH alebo pod kódovým označením Monad) je rozšíriteľný textový (riadkový) shell so skriptovacím jazykom od spoločnosti Microsoft. Produkt je založený na platforme .NET Framework az toho vyplýva i jeho odlišnosť od ostatných shellov, miesto textové rúry, ako je tomu u UNIX shellu, obsahuje PowerShell rúru objektovú. (Zdroj: Wikipedia)
Windows PowerShell is an interactive object-oriented command environment with scripting language features that utilizes small programs called cmdlets to simplify configuration, administration, and management of heterogeneous environments in both standalone and NETWORKED typologies by utilizing standards-based remoting protocols. (Zdroj: Microsoft Technet, Ed Wilson).V preklade to znamená toto:
PowerShell je interaktívny, objektovo orientované príkazové prostredie s podporou skriptovanie, ktoré za využitie malých programov nazývaných commandlety, uľahčuje konfiguračný manažment, administráciu a správu v heterogénnych prostrediach a to ako samostatných, tak aj sieťových a to za použitia vzdialených protokolov.Môžeme vidieť dva rôzne zdroje a každý z nich má rôzny pohľad na definíciu PowerShell frameworku. Poďme si to rozobrať laicky. PowerShell je objektový na rozdiel od ostatných shellov (bash, Windows, cmd, ...), primárne pracuje s objektmi. Je multiplatformový a od verzie Core 6 je možnosť ho nainštalovať aj na operačné systémy Linux, MacOS a ďalšie (celý list podporovaných operačných systémov). PowerShell je mimo to modulový. Jednoducho povedané, formou prídavných modulov je PowerShell možný rozšíriť o ďalšie funkcionality.
PowerShell nie je len "lepšia" príkazový riadok, ale rovno úplný framework. Inak povedané, je to stavebnica, ktorá sa dá ľahko a rýchlo prispôsobiť pre potreby užívateľa.
K práci s PowerShell nie je nutná znalosti ďalšieho skriptovacieho či programovacieho jazyka, takže je vhodný aj pre úplných začiatočníkov.
PowerShell je obsiahnutý v operačnom systéme Windows 7 a vyšší (či Windows Server 2008R2 a vyššie). Na ostatné operačné systémy (MacOS, Linux, ...) je možné PowerShell doinštalovať. PowerShell má priamy prístup k .NET triedam, teda je možné priamo využívať z PowerShellu a nie je nutné používať len cmdlet, o ktorých sa dočítame nižšie.
Prečo PowerShell?
Dôvodov, prečo začať s PowerShell je hneď niekoľko:
- Dá sa veľmi ľahko naučiť a pochopiť.
- Možno ho ľahko kombinovať s rôznymi nástrojmi a aplikáciami (API, databázy, správa operačného systému).
- Je primárne určený na automatizáciu a túto prácu odvádza skvele.
- Možnosť tvorby vlastných modulov a teda rozšíriteľnosť o vlastnej funkcionality.
- Je úplne zadarmo, jediná investícia je čas a chuť sa ho naučiť.
- Záujem o PowerShell raketovo rastie ( Google Trends), teda jeho znalosť pri hľadaní práce je veľké plus.
- V dnešnej dobe je v top rebríčku skriptovacích jazykov nielen pre Windows prostredie.
- Je proste cool , Aj keď sa pár múch nájde: -X .
Základné pojmy
Teraz, keď sme si PowerShell v rýchlosti predstavili, poďme sa s ním zoznámiť bližšie. Najprv si vysvetlíme základné pojmy:
- PowerShell hosť - rozhranie aplikácie PowerShell. Všeobecne poznáme console host (či terminál) a PowerShell ISE (či iné preferované vývojárske rozhranie)
- Cmdlet - natívne príkaz PowerShell frameworku (commandlet). Časom sa dozvieme, že existujú aj nenativní (custom) príkazy, či funkcia
- Parameter - spôsob odovzdania vstupu funkciu, skriptu či cmdlet
- Snippet - užitočný kúsok kódu, napr .:
function Verb-Noun {param ($ParamName) # code here}
- Aplikačná doména - zaručuje izoláciu knižníc a bezpečnostné nastavenia pre danú exekúciu či hosťa
- Alias - "prezývka" pre príkaz, čiže skrátená forma príkazu
- prípona .ps1 - spustiteľný skript PowerShell. Na spúšťanie skriptov je potreba mať povolenú ExecutionPolicy
- prípona .psm1 - určuje súbor s modulom PowerShell
- prípona .psd1 - určuje dátový súbor PowerShellu alebo manifest modulu
PowerShell nie je case sensitive (nerozlišuje veľké a malé
písmená) ako napríklad unixové shelly. Teda napr. Premenná
$TestVar
je interpretovaná rovnako ako $testvar
PowerShell hosť
V základe rozlišujeme console host (teda terminál) a ISE (I ntegrated S cripting E nvironment), ktoré už viac nie je podporované Microsoftom a je nahradený Visual Studio Code aplikácií.
Čo sa týka prispôsobenia hosťa, PowerShell používa profily, ktoré sú
voliteľné (PowerShell je nutne nepotrebuje). Profil nie je nič iné, než
spustiteľný .ps1
script, ktorý je očakávaný v danej lokalite
(táto lokalita je uložená v premennej $PROFILE
). O profiloch sa
budeme baviť viac v ďalších lekciách.
Kde ho vlastne nájdem?
Ak ste v prostredí Windows (alebo Windows Server), stačí otvoriť vyhľadávanie, napísať PowerShell a vybrať Windows PowerShell:
Console host (čiže terminál)
Console hosť je určený na volanie skriptov a jednoriadkovým príkazom. Aj keď to tento typ hosťa umožňuje, nie je vhodný pre skriptovanie. Vyzerá takto:
Ise host (Integrated Scripting Environment)
PowerShell ISE vyzerá nasledovne:
Keďže Microsoft už nepodporuje PowerShell ISE (aj keď je možné naďalej ho využívať), v priebehu lekcií budeme pracovať s Visual Studio Code:
Visual Studio Code má svojho vlastného hosťa, ale všeobecne ho radíme
do ISE hostí.
Či už klasické ISE alebo Visual Studio Code s rozšírením pre PowerShell, obe tieto varianty sú určené pre development a debugging skriptov.
Keďže inštalácia a nastavenie Visual Studio Code nie je súčasťou lekcie, odporúčam navštíviť nasledujúce článok pre inštaláciu
Verzia PowerShell
Prvá verzia 1.0 vyšla v novembri 2006. Posledná verzia 5.1 primárne pre Windows vyšla v januári 2017. Touto verzií Microsoft ukončil podporu pre Windows PowerShell a prešiel na multiplatformový PowerShell Core. Momentálne je posledná verzia PowerShell 7, ale verzia 5.1 zostáva naďalej funkčné a v prostredí Microsoft je stále najrozšírenejší. Na obrázku nižšie môžeme vidieť verzia PowerShellu (vlastnosť Version) pre rôzne operačné systémy. Taktiež je možné vidieť prispôsobené prostredia pomocou profilov.
Použitá aplikácie: Microsoft Terminal.
Aktuálnu verziu PowerShell frameworku vypíšeme pomocou
príkazu Get-Host
, vypísaním premenné $host
či
premennej $PSVersionTable
.
Výstup PowerShell príkazu
PowerShell pracuje s objektmi, teda Get
príkazy vracia objekt.
Dajme tomu, že chceme dostať objekt bežiaceho procesu
notepad.exe
:
Farebné rámčeky si ihneď popíšeme:
- Úplne hore môžeme vidieť, že tento objekt je dátového typu
System.Diagnostics.Process
(viac o dátových typoch PowerShellu v ďalších lekciách) - Zeleným rámčekom je zvýraznený defaultný výstup
príkazu
Get-Process notepad
. - Modrým rámčekom sú metódy daného objektu.
- Červeným rámčekom pokračujú vlastnosti, ktoré nie sú na výpise všetkých vidieť.
Výstupu a prácu s príkazmi sa budeme viac venovať v ďalšej lekcii
Ako teda začať
Najjednoduchšie je začať s príkazmi Get
, ktoré sú,
povedzme, nedeštruktívne. Potom je dôležité poznať zadania
úlohy. Jedna z mojich počiatočných úloh bolo reportovanie Active Directory
užívateľov a úprava týchto reportov pre zákazníka.
Hlavné je nebáť sa, ak sa naučíte používať príkaz
Get-Help
, nie je sa čoho báť:-) . Úlohy na začiatok si
predvedieme názorne v ďalších lekciách.
V ďalšej lekcii, PowerShell - Syntax, príkazy a rúra (pipeline) , si ukážeme syntax príkazov a použitia rúry.