Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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 cool8-) , 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:

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:

PowerShell

Ise host (Integrated Scripting Environment)

PowerShell ISE vyzerá nasledovne:

PowerShell

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:

PowerShell
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.

PowerShell
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:

PowerShell
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.


 

Všetky články v sekcii
PowerShell
Preskočiť článok
(neodporúčame)
PowerShell - Syntax, príkazy a rúra (pipeline)
Článok pre vás napísal Vojtěch Kašný
Avatar
Užívateľské hodnotenie:
8 hlasov
Aktivity