https://wug.cz/zaznamy/704-Peklo-je-teprve-predstupen-PowerShellu
Syntaxe PowerShellu
PowerShell má poměrně jednoduchou a přehlednou základní syntaxi, která je někdy narušena, ale většinově funguje. Základní syntaxí příkazu je:
Sloveso-PodstatnéJméno -parametr hodnota
Příkladem pak může být:
Get-Process -name explorer.exe
Jak jsem již uvedl v základní obecné syntaxi, podstatné jméno nemusí být pouze jedno, ale může jich být více zapsaných jako jedno slovo pomocí Calme zápisu (každé slovo začíná velkým písmenem). Příkladem takového zápisu může být přidání záznamu do DNS:
Add-DnsServerResourceRecordAAAA -Name "host24" -ZoneName "mojedomena.local"
-AllowUpdateAny -IPv6Address "192.168.1.24" -TimeToLive 01:00:00
Všechna běžně dostupná slovesa (vybrané moduly mohou užívat i další, ale vždy se rozsvítí varování při jejich importu) jsou dostupná následujícím příkazem:
Get-Verb
Úplný seznam uvádím níže:
Verb Group
---- -----
Add Common
Clear Common
Close Common
Copy Common
Enter Common
Exit Common
Find Common
Format Common
Get Common
Hide Common
Join Common
Lock Common
Move Common
New Common
Open Common
Optimize Common
Pop Common
Push Common
Redo Common
Remove Common
Rename Common
Reset Common
Resize Common
Search Common
Select Common
Set Common
Show Common
Skip Common
Split Common
Step Common
Switch Common
Undo Common
Unlock Common
Watch Common
Backup Data
Checkpoint Data
Compare Data
Compress Data
Convert Data
ConvertFrom Data
ConvertTo Data
Dismount Data
Edit Data
Expand Data
Export Data
Group Data
Import Data
Initialize Data
Limit Data
Merge Data
Mount Data
Out Data
Publish Data
Restore Data
Save Data
Sync Data
Unpublish Data
Update Data
Approve Lifecycle
Assert Lifecycle
Complete Lifecycle
Confirm Lifecycle
Deny Lifecycle
Disable Lifecycle
Enable Lifecycle
Install Lifecycle
Invoke Lifecycle
Register Lifecycle
Request Lifecycle
Restart Lifecycle
Resume Lifecycle
Start Lifecycle
Stop Lifecycle
Submit Lifecycle
Suspend Lifecycle
Uninstall Lifecycle
Unregister Lifecycle
Wait Lifecycle
Debug Diagnostic
Measure Diagnostic
Ping Diagnostic
Repair Diagnostic
Resolve Diagnostic
Test Diagnostic
Trace Diagnostic
Connect Communications
Disconnect Communications
Read Communications
Receive Communications
Send Communications
Write Communications
Block Security
Grant Security
Protect Security
Revoke Security
Unblock Security
Unprotect Security
Use Other
Sloveso vždy uvádí akci, kterou příkaz provede, proto vím, že příkazy začínající na Get, vždy slouží k nějakému získání dat, hodnot, ale nic nemění. Tato slovesa bychom měli užívat i ve vlastních funkcích a měli bychom se držet zásady, že funkce dělá to, co říká dané sloveso v jejím názvu.
Tato syntaxe je skvělá, protože kód je velmi dobře čitelný i pro úplného začátečníka, nebo člověka, který je daného jazyku neznalý. Její slabinou je zdlouhavost, proto se běžně užívají 2 věci, které zápis zkracují a urychlují:
- zkratky (aliasy) příkazů
- zápis pouze malými písmeny
Zápis pouze malými písmeny není žádný problém a mohu jej běžně doporučit užít i ve skriptech (dávkových souborech příkazů). PowerShell se pro interaktivní práci snaží zápis zkrátit tak, aby byl rychlý a efektivní. Aby toho dosáhl, má PowerShell tzv. aliasy, což jsou zkratky jednotlivých příkazů. Krom toho, že PowerShell má vestavěnou sadu Aliasů a každé rozšíření má volitelně sadu Aliasů pro své příkazy, může si uživatel defonovat také další svoje alisy. Seznam dostupných alisů získáme příkazem:
Get-Alias
Aliasy jde pohodlněji hledat pomocí definice (tedy uvedení příkazu, pro který chceme alis), např.:
get-alias -Definition Get-ChildItem
Aliasy mají pro správce systémů ještě jeden význam, snaží se PowerShell příkazy mapovat na CMD nebo BASH příkazy, které správci již dobře znají a běžně využívají. Výše uvedený příklad jsem nevybral náhodnou, pojďme se podívat, jaké jsou alisy pro Get-ChildItem:
get-alias -Definition Get-ChildItem
CommandType Name Version Source
----------- ---- ------- ------
Alias dir -> Get-ChildItem
Alias gci -> Get-ChildItem
Alias ls -> Get-ChildItem
Uvedené alisiy dir (pro Windows svět) a ls (pro Linuxový svět) jsou příkazy, které zná každý správce a sám tento příkaz využívám výhradně v podobě aliasu, byť poměrně často sáhnu po alisu gci. Další takový příklad je alias copy, který je zkratkou pro Copy-Item, případně Linuxáci budou preferovat aplias cp. Velmi často jsou užívané také alisy where a select, o kterých má člověk pocit, že jsou samotnými příkazy, protože málo kdy je vidět Whre-Object a Select-Object.
Pajpa – svislítko
Další běžnou součástí syntaxe v PowerShellu pro práci v terminálu i skriptech je pajpa. Pajpa má význam předání výstupu jednoho příkazu (výstupního objektu) jako vstupu do dalšího příkazu. Počet těchto předání, které zapášeme není nikterak omezen, ale pro přehlednost se využívá relativně nízký počet, obvykle jedno až tři. Příklad pak může být:
get-alias | where Source -eq "Microsoft.PowerShell.Utility" | Out-GridView
Výše uvedený příkaz vypíše aliasy příkazů, které jsou součástí modulu PowerShell Utility. Tento výpis se zobrazí v samostatném okně mřížky, která umožňuje prohledávání, filtrování a řazení výstupu.
Zapisování textu
Text, stejně jako ve většině programovacích jazyků, zadáváme v uvozovkách, ovšem v PowerShellu to není tak jednoduché, jak by se mohlo zdát. Když text zapíšeme do uvozovek (jak je známe v češtině), bude se vyhodnocovat dynamický obsah, viz následující příklad:
Write-Host "Dnes je $datum"
Dnes je 10.06.2023
Na proti tomu, když užiji apostrof (jednoduché uvozovky), dynamický obsah se nevyhodnocuje a budu mít vždy text přesně takový, jako jej mám zapsaný, viz níže:
Write-Host 'Dnes je $datum'
Dnes je $datum
Pokud chci, aby součástí textu byly uvozovky, např. nějaká citace, musím takový text uzavřít do jednoduchých uvozovek a bude platit, že dynamický obsah se nevyhodnocuje, protože české uvozovky jsou v tomto případě znakem textu, nikoliv vymezením textového řetěžce.
Proměnná
Nedílnou součástí psaní skriptů je využívání proměnných. Stejně jako ostatní skriptovací jazyky má i PowerShell dynamicky typované proměnné, tedy proměnné mění svůj datový typ v závislosti na svém obsahu. Jméno proměnné začíná vždy $, takže proměnnou s názvem cislo založíme následovně:
$cislo
Do proměnné se přiřazuje jako ve většině jazyků (alespoň těch, které vychází z C) pomocí symbolu rovnítko, hodnotu 2 tedy do proměnné cislo přiřadíme následovně:
$cislo = 2
Otázkou ovšem zůstává, jakého datového typu proměnná cislo je. K tomu, abychom tuto otázku zodpověděli si musíme uvědomit, že PowerShell je objektový jazyk vycházející z .NET, takže jeho objekty mají nějaké vlastnosti a funkce, ke kterým se dostaneme pomocí tečky. Datový typ naší proměnné zjistíme následovně
$cislo.gettype().name
Výsledkem bude typ Int32, tedy celé číslo. Co se stane, když do proměnné cislo zapíšeme hodnotu slovem?
$cislo = "dva"
$cislo.gettype().name
String
Nabízí se tedy otázka, mohu při psaní skriptu nějak zajistit, že v proměnné bude třeba text a nic jiného? Odpověď je ano, protože PowerShell umí na rozdíl od jiných dynamicky typovaných skriptovacích jazyků zafixovat typ proměnné, pomocí uvedení datového typu v hranatých závorkách před proměnnou, dokazuje to následující příklad.
PS C:\Users\petra> [string]$cislo = 2
PS C:\Users\petra> $cislo.gettype().name
String
PS C:\Users\petra> $cislo = "dva"
PS C:\Users\petra> $cislo.gettype().name
String
A co když není automatická konverze mezi dvěma typy možná?
PS C:\Users\petra> [int]$cislo = 2
PS C:\Users\petra> $cislo.gettype().name
Int32
PS C:\Users\petra> [int]$cislo = "2"
PS C:\Users\petra> $cislo.gettype().name
Int32
PS C:\Users\petra> [int]$cislo = "dva"
Cannot convert value "dva" to type "System.Int32". Error: "Vstupní řetězec nemá správný formát."
At line:1 char:1
+ [int]$cislo = "dva"
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
Jak je vidět, PowerShell vyhodí chybu a hodnotu do proměnné nezapíše. Zároveň však např. číslo zapsané číslicí ve formátu textu pozná a převede jej na číslo.
Proměnná Pajpy
Výchozí proměnná, proměnná pajpy či jinými názvy pojmenovávaný proměnná, která obsahuje objekt, jež je předávám mezi příkazy pomocí pajpy. Tato proměnná je součástí vlastního PowerShellu a má dvoje značení (od verze 3)
- $_ se obvykle značí a pomocí $_.<vlastnost> se dostanu k vlastnostem objektu, který mi přichází z pajpy
- $PSItem je plný názve pro tuto proměnnou, kterou nejčastěji zapisujeme jako $_
Další informace o proměnných najdete v dokumentaci PowerShellu a budeme se jim postupně věnovat v dalších článcích tak, jak je budeme potřebovat.
Proměnné prostředí Windows
Každý admin ví, že systém Windows má vlastní systémové proměnné. Tyto proměnné jsou v PowerShellu rovněž dostupné, ale jinak, nežli v CMD, nebo dialogu spustit, kde se uzavírají do symbolů procento. V PowerShellu mají zvláštní zápis, kde součástí jména proměnné je env:, viz příklad:
$Env:windir
Objekt
Opravdu velmi zjednodušeně jde říct, že v PowerShellu je objektem vše. Pokud se chci k něčemu chovat jako k objektu, není to nic těžkého.
- Proměnná rovnou využívá tečkové notace
- Příkaz zavřu do kulatých závorek a využívám tečkové notace
Přístup k vlastnostem objektu na proměnné jsme tu již viděli, jde o:
$cislo.gettype().name
Tento příklad je malinko zvláštní, protože na objektu proměnné $cislo využíváme metodu a na výstupním objektu této metody pak vlastnost. Jak by to bylo s tím, když chci objektově přistoupit k příkazu?
(Get-Date).AddHours(8)
Výše uvedený příkaz vrátí datum a čas, který bude platný za 8 hodin, přičemž využívá metodu objektu, který je vracen příkazem Get-Date.
Programátoři se ovšem nemusí bát, objekty je možné vytvářet pomocí tříd stejně, jako v jiných objektových jazycích, ale jde již o pokročilou věc, kterou IT profesionálové nejspíš potřebovat nebudou, proto si danou syntaxi najděte v dokumentaci.
Bloky
Již opravdu poslední částí obecné syntaxe jsou bloky, ať jde o funkce, větvení, skriptbloky, či sekce DSC. Všechny bloky uzavíráme do složených závorek, např.
try {New-Item -Path Z:\zaloha -name Dnesek -type "directory"} catch {write-host "Nezdařilo se"}
Nápověda PowerShellu
PowerShell je MS produktem s nejlepší dokumentací. Hodně tomu napomáhá silná komunita, ale také fakt, že PowerShell prochází všemi produkty Microsoftu. Pojďme se tedy podívat, jak pracovat s nápovědou, tedy dokumentací.

Před prvním užitím je dobré nápovědu aktualizovat:
Update-Help -Force
Nyní nám již nic nebrání otevřít si okno nápovědy
Get-Help -ShowWindow

Na tomto místě by se slušelo říct, že PowerShell má dva základní druhy nápovědy:
- Nápovědu k příkazům
- Tématickou nápovědu
Nápovědu k příkazu spustíme tak, že za příkaz nápovědy dáme příkaz, k němuž hledáme nápovědu. Opět na příkladu, řekněme, že chci zjistit nápovědu k práci s procesy ve Windows:
get-help process

Nyní vidím příkazy pro práci s procesy, např. pro výpis procesů vidím, že slouží příkaz get-process a pokud budu chtít další informace o tomto příkazu zadám si
get-help get-process -ShowWindow
#nebo prop výpis v konzoli
get-help get-process
Kdo by chtěl v konzoli podrobnou nápovědu, pak využije příkaz:
get-help get-process -Full
Komu se naopak nechce číst celou nápovědu, ale chce vidět jen příklady použití, pak může využít:
get-help get-process -examples
Příklady užití příkazu přikládám z vlastního modulu:

Asi nejzajímavější možností, pokud je k dispozici konektivita, je zobrazení nápovědy online pomocí výchozího webového prohlížeče:
get-help get-process -online
A jak je to s tématickou nápovědou? Inu dost obdobně jako s tou k cmdletům. Základem je opět příkaz get-help, ale másto názvu příkazu nebo odvětví zadávám about_ a tématický okruh. V tomto případě již důrazně doporučuji otevírat nápovědu v samostatném okně. Opět si vše ukažme na příkladu, budou nás zajímat rozšíření PowerShellu, kterým se říká moduly:
get-help about_modules -ShowWindow
Pokud se vám zdá psát get-help zdlouhavé, tak mě také, proto prozradím zkratku, stačí napsat man. Připomíná vám to Bash? Nedivím se, jde o jednu ze zkratek, kterou PowerShell právě z Bashe převzal ;). Případně se dá syntaxe převzít z CMD a lze pro základní nápovědu psát (vždy základní výpis do konzoly):
get-process -?

Tvorba nápovědy
Vlastní skripty, funkce a moduly můžeme rovněž vybavit integrovanou nápovědou. Pro skripty a moduly publikované v PowerShell galerii je povinností nápovědu obsahovat. Pokud využíváme pro psaní PowerShell ISE, tak nám s nápovědou pomohou snipety, ale i bez nich to není nic těžkého, jde vlastně o blokový komentář, který má předepsaný tvar.

Nápověda nemusí obsahovat všechny bloky uvedené na obrázku (může navíc obsahovat .NOTE [informace o autorovi a verzi] apod.), úplný výčet klíčových slov a jejich význam je v dokumentaci. Častěji má nápověda podobu následujícího příkladu:
<#
.Synopsis
kontrola systémovýh souborů.
.DESCRIPTION
kontrola systémových souborů nativními nástroji scf a dism
.EXAMPLE
Check-SystemFiels -scannow
provede příkaz sfc /scannow
.EXAMPLE
Check-SystemFiels -scanfile -Path c:\windows\system32\kernel32.dll
Provede kontrolu integrity a pokusí se o opravu souboru kernel32.dll
#>
Pokud jsou komentáře u definic parametrů, pak výsledná nápověda vypadá následovně:
Synopsis
kontrola systémovýh souborů.
Description
kontrola systémových souborů nativními nástroji scf a dism
Parameters
-path <String>
Určuje cestu k souboru, který má být verifikován nebo opraven
Required? false
Position? 1
Default value
Accept pipeline input? true (ByPropertyName)
Accept wildcard characters? false
-scannow <SwitchParameter>
Spustí kontrolu systémových souborů běžícího systému, vede na sfc /scannow
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
-verifyonly <SwitchParameter>
Provede kontrolu bez pokusů o opravu poškozeného souboru, vede na sfc /verifyonly
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
-scanfile <SwitchParameter>
Nastavuje nástroj sfc do móduz kontroly konkrétního soubooru, vždy kombinován s parametrem Path
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
-offline <SwitchParameter>
Říká, že se bude verifikovat jiná, nežli běžící instance systému Windows, kombinuje se s parametry offbootdir a offwindir
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
-verifyfile <SwitchParameter>
kontrola souboru
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
-offbootdir <String>
U offline kopie systému Windows říká, který disk je její systémový
Required? false
Position? named
Default value
Accept pipeline input? false
Accept wildcard characters? false
-offwindir <String>
U offline kopie systému Windows udává její systémový adresář
Required? false
Position? named
Default value
Accept pipeline input? false
Accept wildcard characters? false
-store <SwitchParameter>
pomocí nástroje DISM provede sken a následně opravu systémových balíčů běžící kopie systému Windows
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
Syntax
Check-SystemFiles [[-path] <String>] [-scannow ] [-verifyonly ] [-scanfile ] [-offline ] [-verifyfile ] [-offbootdir <String>] [-offwindir <String>] [-store ] [<CommonParameters>]
Examples
-------------------------- EXAMPLE 1 --------------------------
PS C:\>Check-SystemFiels -scannow
provede příkaz sfc /scannow
-------------------------- EXAMPLE 2 --------------------------
PS C:\>Check-SystemFiels -verifyonly
provede příkaz sfc /verifyonly - tedy pouze kontrolu bez oprav
-------------------------- EXAMPLE 3 --------------------------
PS C:\>Check-SystemFiels -scanfile -Path c:\windows\system32\kernel32.dll
Provede kontrolu integrity a pokusí se o opravu souboru kernel32.dll
-------------------------- EXAMPLE 4 --------------------------
PS C:\>Check-SystemFiels -offline -scanfile -Path d:\windows\system32\kernel32.dll -offbootdir d: -offwindir d:\windows
Provede kontrolu integrity a pokusí se o opravu souboru kernel32.dll z offline image na disku d:
-------------------------- EXAMPLE 5 --------------------------
PS C:\>Check-SystemFiels -store
Provede kontrolu systému příkazem dism /online /cleanup-image /restorehealth
Jak je vidět, nápovědu je možné (až na klíčová slova definující jednotlivé sekce) psát v mateřském jazyce, ale pro PowerShell galerii je potře mít nápovědu anglicky, teoreticky pak můžete mít značkou jazyka odlišený odstavec mateřském jazyce v každé sekci.
Svatá trojice – aneb 3 nejzákladnější příkazy PowerShellu
Svatou trojicí nazývám trojici nejdůležitějších cmdletů (příkazů), které nám dokáží pomoci při naší práci s PowerShellem. Jen pro pořádek v PowerShellu provádíme komentář znakem #
Get-command
Slouží k vypsání všech dostupných příkazů, které můžeme užívat. Problémem je opravdu obří množství příkazů, které se ještě liší dle toho, jaká rozšíření jsou na daném počítači dostupná.
Máme možnost nechat si vypsat jen podstatné příkazy v kontextu našeho aktuálního příkazového okna. V takovém případě PowerShell zohlední to, která rozšíření máme aktivní, zda jsme na vzdáleném počítači či provádíme správu konkrétní cloudové aplikace. Příkaz pak má tvar:
Get-Command -ListImported
Již tady padla zmíňka o rozšířeních PowerShellu (tzv. modulech), pak je asi logické, že je možné zeptat se na příkazy, které obsahuje konkrétní rozšíření, např. modul pro Office 365:
Get-Command -Module MSOnline
Poslední možnost, kterou zmíním je vypsání informací o konkrétním příkazu včetně jeho syntaxe, tuto možnost si ukážeme na příkazu pro vypsání obsahu adresáře:
Get-Command Get-Childitem | select *
Get-Help
Tento příkaz slouží pro hledání v nápovědě, pokud nechcete pracovat s Googlem nebo online nápovědou. Další informace najdete v kapitole o nápovědě.
Get-Member
PowerShell stejně jako ostatní moderní jazyky je objektový, proto potřebuje něco, co dokáže vypasat vlastnosti a dovednosti objektu, tedy programátorsky metody a vlastnosti.
Pojďme si vše opět ukázat na příkladu, využijme opět procesy systému a pojďme zjistit, co vše můžeme s procesy dělat a zjišťovat o nich. Výše jsme si ukázali, že výpis procesů zajistí příkaz get-process. Pokud využijeme příkaz:
get-process | get-member
Dostaneme seznam obecných vlastností procesů a jejich popis, samozřejmostí je seznam úkonů, které můžeme s procesy dělat. Vidíme, že můžeme například proces zabít, což dělá metoda kill.
Z výše uvedeného víme, že zabití procesu správce úloh by se provedlo příkazem:
get-process -name taskmgr | kill
Co je PowerShell?
„Peklo je teprve předstupněm PowerShellu“ (cit. Ondřej Ševečk)
PowerShell je skriptovací jazyk z dílen Microsoftu, který je dnes již dostupný napříč platformami. Do verze 5.1 šlo o výhradně Widnows nástroj, od verze Core 6 je možné jej instalovat i na Linux či macOS.
Powershell slouží hlavně pro automatizci a úloh správy počítačů, serverů a síťových prvků, ale díky své všestranosti a intuitivnosti si našel své místo i u programátorů a hekrů. Původní PowerShell stál (a na Windows stále stojí) nad .NET Frameworkem, z toho plyne, že umí volat i .NET příkazy.
Pokročilé zabezpečení je dostupné od verze 5, ale již od verze 3 bylo možné určité omezení toho, co lze spouštět. Základní vlastností PowerShellu je modulárnost, existují statisíce modulů, kterými je možné si Powershell obohatit a každý si může napsat svoje vlastní moduly. Nejsnažší cestou, jak přijít k modulu je na Widnows serveru instalace nové role či funkce, kde pokud zahrneme nástroje pro správu získáme tím krom MMC konzole i rozšíření PowerShellu, dále je možné moduly instalovat příkazem, který je stáhne z internetu (např. z PowerShell Galerie).
Jen pro zajímavost, někteří pamětníci mohou znát projekt Nomád, pod kterým se první generace PowerShellu představila veřejnosti v roce 2005. První i druhá generace podporovaly Windows XP a Widnows server 2003.
Druhou zajímavostí je, že Microsoftu PowerShell tým stále vede jeden z otců Powershellu Jeffrey Snover.
Historie
•2005 představen veřejnosti projekt Nomád
•2006 z projektu Nomád se stává PowerShell verze 1
•2009 verze 2 umožňující rozšiřitelnost
•2012 verze 3 se základní podporou nastavení bezpečnosti
•2016 verze 5 s pokročilou bezpečností
•2018 PowerShell Cor verze 6, první multiplatformní verze
•2020 PowerShell verze 7 LTS nad .NET Core 3.1
•Verze 7 100% dokáže nahradit verzi 5 na Windows
Jmenná konvence verzí
- Verze 1 až 5.1: Windows PowerShell
- verze 6: PowerShell Core
- Verze 7: PowerShell
Názvosloví

Technické požadavky
Windows
Na platformě Windows můžeme dnes již provozovat jak běžný PowerShell, tak jeho multiplatformní verzi Core. Poslední verzí je PowerShell 7.1, který je nyní na Windows k dispozici jako Preview, nicméně základ tvoří předinstalovaný Powershell verze 5.1 ve Windows 10.
Jaké verze Windows pordporuje PowerShell 5.1 a 7?
Od Windows 7 je PowerShell nějaké verze nativní součístá operačního systému. Na serverch je pak nativně Powershell dostupný nativně od verze 2008.PowerShell 5.1 je možné si manuálně doinstalovat na:
- Windows 7 SP1
- Windows 8
- Windows 8.1
- Windows server 2008 R2
- Windows server 2012
- Windows server 2012 R2
Windows 10, Windows server 2016 a Windows server 2019 jej obsahují nativně
Powershell verze 7 lze ručně instalovat na všechny výše zmíněné OS, není nativně obsažen v žádné verzi Windows.
PowerShell 5.x je sovu instalací svázán s frameworkem pro vzdálenou správu počítače a je k dispozici jako samostatná aktualizace Windows. Novější verze se pak instalují jako libovolný jiný program.
Powershell Core, tedy multiplatformní verzi, je potřeba vždy instalovat. Tato verze na Windows ovšem může fungovat po boku nativní Windows verze.
Linux
Přátelé z Linoxového spektra IT mě mají za blázna, když mým prvník krokem po příchodu k Linux počítači byla instalae PowerShellu. Většinový názor linuxáků je, že Bash stačí, ale pro ty, kteří potřebují skriptovat na Windows i Linuxu a nechtějí vše psát dvakrát v různých jazycích zde uvedu přehled distribucí, které podporují instalaci PowerShell Core.
Podporované distribuce:
- Ubuntu
- Debian
- CentOS
- Red Hat Enterprise Linux
- OpenSUSE
- Fedora
Komunitní balíčky jsou k dispozici i pro:
- Arch Linux
- Kali Linux
Ty komunitní balíčky jsou mimo oficiální podporu Micorosftu.
macOS
Pro příznivce Apple je k dispozici PowerShell Core na jejich macOS 10.12 a novější.
Seriál PowerShell cz/sk technet blog
Dnes bych se rád podělil o starý seriál Davida Moravce, který je potřeba tahat z archivu Technet Blogu a již se v něm nedá souvisle pohybovat.
Maturitní otázky z pedagogiky
Níže přikládám link na složku s vypracovanými otázkami.