Proč používat PowerShell už je nám jasné a další náš krok je též daný, musíme začít jak jinak, než programátorskou klasikou.
“Hello World“
cls #vymazat obrazovku Hello-world function Hello-World # funkce { Write-Host "Ahoj světe, dnes je $(Get-Date -format 'dd.MM.yyyy')" ` -ForegroundColor Black ` -BackgroundColor Green }
Jestli se vám tento příklad zdá složitý tak je to jen pro to že obsahuje funkci která nejen že vypíše Ahoj světe a změní barvu písma a pozadí ale přidá i dnešní den do pozdravu což je po Write-Host druhý použitý Commandlet -> Get-Date v programu.
Úplně ta nejjednodušší verze by zněla asi takto:
Write-Host "Ahoj světe"
Ano kód je jednoduchý a přehledný. Následující pouhé 2 řádky kódu vám ukáží v čem tkví síla Powershellu:
$Form = new-object System.Windows.Forms.Form $Form.ShowDialog()
Ano powershell je plně objektový a může tak využít všechny kouzla platformy .NET. Kdo již tyto dva řádky zkopíroval do okna Powershellu tak vytvořil klasické windows okno se vším co standardně má mít. To znamená minimalizace, maximalizace, zavření a všechny další vlastnosti.
Ano máte pravdu ani k tvorbě okenních aplikací však není Powershell stvořen.
Jeho hlavní síla je malinko jinde. A to ve správě systémů Windows a její automatizace. Následující řádek kódu vám přehledně zobrazí veškeré nainstalované programy mimo těch od Microsoftu:
Get-WMIObject -Query "SELECT * FROM Win32_Product Where Not Vendor Like '%Microsoft%'" |FT
Příkaz v PowerShellu se nazývá Cmdlet
Jméno cmdletu vždy v jednotném čísle:
(Get-Help / Get-Helps)
Get-Help Get-Command -Full
*Zobrazí nám nápovědu pro cmdlet Get-Command
*Parametr –Full obrazí více detailně nápovědu
Aliasy
Jiný(většinou jednodušší) název pro daný cmdlet
Get-Alias vypíše aliasy s cmdlety
New-Alias definuje pouze vlastní aliasy
Set-Alias definuje vlastní aliasy, navíc upravuje i vytvořené (předdefinované)
Po ukončení konzole přestane alias existovat -> řešení je exportování a následné importování
Oproti jiným programovacím jazykům jako například C# má Powershell menší rozdíly v porovnávacích operátorech.
Nejlépe si to rovnou ukážeme:
50 -gt 20 # větší 10 -lt 20 # menší 50 -ge 20 # vetší nebo rovno 15 -le 20 # menší nebo rovno 25 -eq 25 # rovno 29 -ne 25 # nerovná se 'adam' -eq 'Adam' # case insensitive 'adam' -ceq 'Adam' # case sensitive
Operátory logické se již drží standartních jmen: AND(obě tvrzení pravda), OR(aspoň jedno tvrzení je pravda), XOR(jeden výraz je pravda), NOT(negace)
$cislo = 6 if(($cislo -gt 5) -and ($cislo -lt 7)) { Write-Host "Podmínky splněny" }
PowerShell a roura (pipeline)
Roura je v PowerShellu jedna z nejsilnějších věcí celého frameworku. Na rozdíl od klasických textových shellů, (například bash nebo Windows Command Line) umí PowerShell poslat rourou celé objekty, včetně všech vlastností a metod.
'C:\x\test.zip','C:\x\test.txt' | Get-Item | Select-Object FullName, Length, LastAccessTime, LastWriteTime, Mode | Sort-Object Length -Descending | Format-List
A teď co se stane:
- ‘C:\x\test.zip’,’C:\x\test.txt’ – dva řetězce (string), jsou předány jeden po druhém do roury |
- Get-Item – příkaz si postupně převezme oba řetězce a vykoná příkaz s danou cestou
- Select-Object FullName, Length, LastAccessTime, LastWriteTime, Mode – převezme rourou výstup každého Get-Item příkazu a vybere pouze dané vlastnosti objektu (Select-Object * vždy vrací všechny vlastnosti objektu, což může být někdy nežádoucí)
- Sort-Object Length -Descending – příkaz sestupně seřadí výsledek všech objektů předané rourou (-Descending) podle vlastnosti Length
- Format-List – příkaz zformátuje celý výsledek do listu (defaultní je tabulka)
PowerShell ISE
Jednoduché IDE pro tvorbu a ladění skriptů pro PowerShell IDE = vývojové prostředí
Selektivní spouštění, části skriptu se dají vybrat a tento výběr následně spustit F8
Barevně zvýrazňuje syntaxe a páruje závorky, upozorňuje na chyby při psaní skriptu
Obsahuje:
Editor skriptů
Konzoli
Debugger
Podokno s cmdlety
Práce v PS ISE
Intellisense našeptává a zobrazuje parametry pro cmdlety
TAB doplňuje stejně jako v konzoli
Psaní poznámek(komentářů) je uvozeno symbolem #
Možnost užití tagu <# text poznámek #>
SHIFT + ENTER = vložení prázdného řádku
Pokud není skript uložený, vždy se vloží do konzole
Předuložené syntaxe(Snippets) v PowerShell ISE – vyvoláme pomocí CTRL + J
Možnost přidání vlastního snippetu