Powershell: Základy
Z MiS
(Rozdíly mezi verzemi)
m (→Syntaxe: *-LocalUser - doplněno "viz dále", protože už to tam je.) |
(Přidáno předávání dat jako objekty a Get-Member.) |
||
Řádka 17: | Řádka 17: | ||
* Unix je zaměřený na práci se soubory — ovládání systému se řeší zápisem do virtuálních souborů. | * Unix je zaměřený na práci se soubory — ovládání systému se řeší zápisem do virtuálních souborů. | ||
* Windows jsou zaměřené na ovládání skrz API — nejsou zde odpovídající virtuální soubory. | * Windows jsou zaměřené na ovládání skrz API — nejsou zde odpovídající virtuální soubory. | ||
− | * Předávání dat mezi programy neprobíhá formou plain-textu, ale objektů. | + | * Předávání dat mezi programy neprobíhá formou plain-textu, ale objektů viz [[#Předávání výstupu| sekce Předávání výstupu]]. |
Řádka 50: | Řádka 50: | ||
* Více příkazů na jednom řádku oddělíme středníkem | * Více příkazů na jednom řádku oddělíme středníkem | ||
* Case-insensitive... Nerozlišují se malá a velká písmena | * Case-insensitive... Nerozlišují se malá a velká písmena | ||
+ | |||
+ | |||
+ | == Předávání výstupu == | ||
+ | * Při přesměrování výstupu příkazu nepředává text (jako klasický příkazový řádek Windows či shell Linuxu), ale předává objekty s atributy. | ||
+ | * Tyto objekty lze převést na text například při výstupu na obrazovku, ale lze s nimi pracovat i jako s objekty. | ||
+ | |||
+ | ''...commandlet...'' | Get-Member | ||
+ | * Alias: <code>gm</code> | ||
+ | * Zjistí, jaké vlastnosti mají objekty, které jsou výsledkem commandletu. | ||
+ | * Pomocí <code>Select</code> pak lze vybrat zobrazení těch vlastností, které nás zajímají. (Dále viz [[Powershell: Pipelining|pipelining]]). | ||
+ | |||
== Aliasy == | == Aliasy == |
Aktuální verze z 9. 1. 2024, 10:23
Obsah |
Úvod
- Powershell je novější alternativou klasického příkazového řádku Windows.
- Zkratka PS.
- Zdrojový kód uvolněn veřejně. (Přeloženo i pro Linux.)
- Proč je třeba rozvíjet příkazový řádek?
- Snaha o jednotné ovládací rozhraní v CLI.
- S rozvojem cloudových řešení (Microsoft Azure) rostou nároky na automatizaci provozu a vytváření serverů.
- Díky aliasům můžeme použít
- nativní příkazy Windows
- nativní příkazy Unixu (ale parametry už obvykle ne)
- Srovnání s Bashem
- Unix je zaměřený na práci se soubory — ovládání systému se řeší zápisem do virtuálních souborů.
- Windows jsou zaměřené na ovládání skrz API — nejsou zde odpovídající virtuální soubory.
- Předávání dat mezi programy neprobíhá formou plain-textu, ale objektů viz sekce Předávání výstupu.
Pojmy
- Workflow
- Možnost spustit sadu příkazů a zavřít aktivní shell, i když dávka ještě běží.
- Cmdlet (Commandlet)... nativní příkaz Powershellu
Syntaxe
- Názvy commandletů
-
Sloveso+pomlčka+podstatné_jméno
- Podstatné jméno je vždy v jednotném čísle.
-
- Slovesa v názvech commandletů
-
Get-
,Set-
-
Add-
-
Copy-
,Remove-
,Move-
-
Import-
,Export-
,ConvertTo-
-
Start-
,Stop-
- Příklad:
Get-Help
- Výpis všech dostupných sloves:
Get-Verb
-
- Přepínače... začínají pomlčkou
- Parametry přepínačů
- Přepínač může mít více parametrů oddělených čárkou
- Sady přepínačů
- Některé kombinace přepínačů mohou fungovat spolu.
- Jiné přepínače nelze kombinovat.
- Metaznaky
-
*
... zastupuje libovolné znaky. - Lze použít i v rámci našeptávání:
*-LocalUser
a tabulátor pak nabízí slovesa viz dále.
-
- Více příkazů na jednom řádku oddělíme středníkem
- Case-insensitive... Nerozlišují se malá a velká písmena
Předávání výstupu
- Při přesměrování výstupu příkazu nepředává text (jako klasický příkazový řádek Windows či shell Linuxu), ale předává objekty s atributy.
- Tyto objekty lze převést na text například při výstupu na obrazovku, ale lze s nimi pracovat i jako s objekty.
...commandlet... | Get-Member
- Alias:
gm
- Zjistí, jaké vlastnosti mají objekty, které jsou výsledkem commandletu.
- Pomocí
Select
pak lze vybrat zobrazení těch vlastností, které nás zajímají. (Dále viz pipelining).
Aliasy
- Protože jsou názvy commandletů dlouhé, existují k nim zkrácené verze — aliasy.
- Pokud existuje obdobný příkaz Windows nebo Linuxu, obvykle existují i odpovídající aliasy.
Get-Alias alias Get-Alias -Name alias
- Dohledání původního příkazu k zadanému aliasu.
- Aliasy: gal
Get-Alias md
Výstup:
- md → mkdir
- Jaký příkaz zastupuje alias
dir
?
Get-Alias -Name dir
Get-Alias -Definition Zastoupený-příkaz
- Jaké aliasy můžeme použít místo zadaného commandletu?
Get-Alias -Definition Get-ChildItem
Výstup:
dir → Get-ChildItem ls → Get-ChildItem
Doporučení:
- Pro ruční práci používejte zkrácené verze příkazů.
- Skripty pište v plné verzi.
Ovládání Powershellu
-
Tabulátor
→ doplňování příkazů
V našeptávači můžete použít metaznaky *
a ?
. Například:
*User
(Bude nabízet commandlety, které mají v názvu User
.)
-
#fráze + Tabulátor
- vyhledává frázi v historii použitých příkazů
- Nastavení prostředí
- Pravé tlačítko na ikonku v levé horní části okna.
ISE
- Integrated Scripting Environment
- Obdoba IDE pro programovací jazyky.
- Má kontextovou nápovědu.
Verze Powershellu
- Powershell se vyvíjí, přibývají nové příkazy a varianty syntaxe.
- Díky tomu ale některé návody nemusí vždy fungovat — je třeba ověřit verzi.
- První verze uvolněna v roce 2006.
- V roce 2021 ve Windows obvykle verze 5.1.
- Až do verze 5 jako „Windows Powershell“. Verze 6 s názvem „Powershell Core 6.0“ již platformně nezávislá, existuje implementace pro Linux a macOS.
- U verze 7 se předpokládá, že nahradí verze 6 i 5.1.
- Zjištění verze:
$PSversionTable Get-Host | Select-Object Version $host.version
Při problémech a nefunkčních návodech
- Je složen z modulů, je možné, že nemáte nainstalován odpovídající modul.
- Na Windows Serveru jsou některé moduly, které běžné Windows nemají.
Některé commandlety smí použít jen správce!
- Vyzkoušej spuštění PS jako správce!
Zdroje
- Microsoft Virtual Academy: Getting Started with PowerShell
- Advanced Tools & Scripting with PowerShell
- Powershell.org
- ITNetwork.cz → Powershell pro začátečníky (první část kurzu zdarma, další placená)