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

Lekce 1 - PowerShell pro začatečníky

Vítejte v dnešní úvodní lekci kurzu PowerShell frameworku, kde se seznámíme s hostem, vysvětlíme si základní pojmy, seznámíme se s prostředím a ukážeme si jeho částečné přizpůsobení. Dále si ukážeme, jak začít pracovat s PowerShellem na denní bázi, jeho výhody, nevýhody a limity.

Oficiální definice

Nejdříve si uvedeme oficiální definici PowerShellu:

PowerShell (dříve známý jako Microsoft Shell, Windows PowerShell, MSH nebo pod kódovým označením Monad) je rozšiřitelný textový (řádkový) shell se skriptovacím jazykem od společnosti Microsoft. Produkt je založen na platformě .NET Framework a z toho vyplývá i jeho odlišnost od ostatních shellů, místo textové roury, jak je tomu u UNIX shellu, obsahuje PowerShell rouru objektovou. (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 překladu to znamená toto:

PowerShell je interaktivní, objektově orientované příkazové prostředí s podporou skriptování, které za využití malých programů nazývaných commandlety, usnadňuje konfigurační management, administraci a správu v heterogenních prostředích a to jak samostatných, tak i síťových a to za použití vzdálených protokolů.

Můžeme vidět dva různé zdroje a každý z nich má různý pohled na definici PowerShell frameworku. Pojďme si to rozebrat laicky. PowerShell je objektový na rozdíl od ostatních shellů (bash, Windows, cmd,...), primárně pracuje s objekty. Je multiplatformní a od verze Core 6 je možnost jej nainstalovat i na operační systémy Linux, MacOS a další (celý list podporovaných operačních systémů). PowerShell je mimo to modulový. Jednoduše řečeno, formou přídavných modulů je PowerShell možný rozšířit o další funkcionality.

PowerShell není jen "lepší" příkazová řádka, ale rovnou úplný framework. Jinak řečeno, je to stavebnice, kterou lze snadno a rychle přizpůsobit pro potřeby uživatele.

K práci s PowerShellem není nutná znalost dalšího skriptovacího či programovacího jazyka, tudíž je vhodný i pro úplné začátečníky.

PowerShell je obsažen v operačním systému Windows 7 a vyšší (či Windows Server 2008R2 a vyšší). Na ostatní operační systémy (MacOS, Linux, ...) je možné PowerShell doinstalovat. PowerShell má přímý přístup k .NET třídám, tudíž je lze přímo využívat z PowerShellu a není nutno používat jen cmdlety, o nichž se dočteme níže.

Proč PowerShell?

Důvodů, proč začít s PowerShellem je hned několik:

  • Dá se velice snadno naučit a pochopit.
  • Lze jej lehce kombinovat s různými nástroji a aplikacemi (API, databáze, správa operačních systémů).
  • Je primárně určen k automatizaci a tuto práci odvádí skvěle.
  • Možnost tvorby vlastních modulů a tudíž rozšiřitelnost o vlastní funkcionality.
  • Je naprosto zdarma, jediná investice je čas a chuť se jej naučit.
  • Zájem o PowerShell raketově roste (Google Trends), tudíž jeho znalost při hledání práce je velké plus.
  • V dnešní době je v top žebříčku skriptovacích jazyků nejen pro Windows prostředí.
  • Je prostě cool 8-), i když se pár much najde :-X.

Základní pojmy

Nyní, když jsme si PowerShell v rychlosti představili, pojďme se s ním seznámit blíže. Nejprve si vysvětlíme základní pojmy:

  • PowerShell host - rozhraní aplikace PowerShell. Obecně známe console host (či terminál) a PowerShell ISE (či jiné preferované vývojářské rozhraní)
  • Cmdlet - nativní příkaz PowerShell frameworku (commandlet). Časem se dozvíme, že existují i nenativní (custom) příkazy, či funkce
  • Parametr - způsob předání vstupu funkci, skriptu či cmdletu
  • Snippet - užitečný kousek kódu, např.: function Verb-Noun {param ($ParamName) # code here}
  • Aplikační doména - zaručuje izolaci knihoven a bezpečnostní nastavení pro danou exekuci či hosta
  • Alias - "přezdívka" pro příkaz, neboli zkrácená forma příkazu
  • přípona .ps1 - spustitelný skript PowerShellu. Ke spouštění skriptů je potřeba mít povolenou ExecutionPolicy
  • přípona .psm1 - určuje soubor s modulem PowerShell
  • přípona .psd1 - určuje datový soubor PowerShellu nebo manifest modulu

PowerShell není case sensitive (nerozlišuje velká a malá písmena) jako například unixové shelly. Tudíž např. proměnná $TestVar je interpretována stejně jako $testvar

PowerShell host

V základu rozlišujeme console host (tedy terminál) a ISE (Integrated Scripting Environment), které už není nadále podporováno Microsoftem a je nahrazen Visual Studio Code aplikací.

Co se týče přizpůsobení hosta, PowerShell používá profily, které jsou volitelné (PowerShell je nutně nepotřebuje). Profil není nic jiného, než spustitelný .ps1 script, který je očekáván v dané lokalitě (tato lokalita je uložena v proměnné $PROFILE). O profilech se budeme bavit více v dalších lekcích.

Kde jej vlastně najdu?

Pokud jste v prostředí Windows (či Windows Server), stačí otevřít vyhledávání, napsat PowerShell a vybrat Windows PowerShell:

PowerShell

Console host (neboli terminál)

Console host je určen k volání skriptů a jednořádkovým příkazům. I když to tento typ hosta umožňuje, není vhodný pro skriptování. Vypadá takto:

PowerShell

ISE host (Integrated Scripting Environment)

PowerShell ISE vypadá následovně:

PowerShell

Jelikož Microsoft již nepodporuje PowerShell ISE (i když je možné nadále jej využívat), v průběhu lekcí budeme pracovat s Visual Studio Code:

PowerShell Visual Studio Code má svého vlastního hosta, ale obecně jej řadíme do ISE hostů.

Ať už klasické ISE nebo Visual Studio Code s rozšířením pro PowerShell, obě tyto varianty jsou určeny pro development a debugging skriptů.

Jelikož instalace a nastavení Visual Studio Code není součástí lekce, doporučuji navštívit následující článek pro instalaci

Verze PowerShell

První verze 1.0 vyšla v listopadu 2006. Poslední verze 5.1 primárně pro Windows vyšla v lednu 2017. Touto verzí Microsoft ukončil podporu pro Windows PowerShell a přešel na multiplatformní PowerShell Core. Momentálně je poslední verze PowerShell 7, ale verze 5.1 zůstává i nadále funkční a v prostředí Microsoft je stále nejrozšířenější. Na obrázku níže můžeme vidět verze PowerShellu (vlastnost Version) pro různé operační systémy. Taktéž je možné vidět přizpůsobené prostředí pomocí profilů.

PowerShell Použitá aplikace: Microsoft Terminal.

Aktuální verzi PowerShell frameworku vypíšeme pomocí příkazu Get-Host, vypsáním proměnné $host či proměnné $PSVersionTable.

Výstup PowerShell příkazu

PowerShell pracuje s objekty, tudíž Get příkazy vrací objekt. Dejme tomu, že chceme dostat objekt běžícího procesu notepad.exe:

PowerShell Barevné rámečky si ihned popíšeme:

  • Úplně nahoře můžeme vidět, že tento objekt je datového typu System.Diagnostics.Process (více o datových typech PowerShellu v dalších lekcích)
  • Zeleným rámečkem je zvýrazněn defaultní výstup příkazu Get-Process notepad.
  • Modrým rámečkem jsou metody daného objektu.
  • Červeným rámečkem pokračují vlastnosti, které nejsou na výpisu všechny vidět.

Výstupu a práci s příkazy se budeme více věnovat v další lekci

Jak tedy začít

Nejjednodušší je začít s příkazy Get, které jsou, řekněme, nedestruktivní. Pak je důležité znát zadání úlohy. Jedna z mých počátečních úloh bylo reportování Active Directory uživatelů a úprava těchto reportů pro zákazníka.

Hlavní je nebát se, pokud se naučíte používat příkaz Get-Help, není se čeho bát :-). Úlohy na začátek si předvedeme názorně v dalších lekcích.

V další lekci, PowerShell - Syntaxe, příkazy a roura (pipeline), si ukážeme syntaxi příkazů a použití roury.


 

Všechny články v sekci
PowerShell
Přeskočit článek
(nedoporučujeme)
PowerShell - Syntaxe, příkazy a roura (pipeline)
Článek pro vás napsal Vojtěch Kašný
Avatar
Uživatelské hodnocení:
149 hlasů
Aktivity