Powershell: Základy
Z MiS
(Rozdíly mezi verzemi)
(Vytvořena kostra stránky, přidány zdroje.) |
(Přidáno předávání dat jako objekty a Get-Member.) |
||
| (Není zobrazeno 13 mezilehlých verzí od 1 uživatele.) | |||
| Řádka 2: | Řádka 2: | ||
== Úvod == | == Ú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.) | * 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 [[#Předávání výstupu| sekce Předávání výstupu]]. | ||
| + | |||
==Pojmy== | ==Pojmy== | ||
*Workflow | *Workflow | ||
**Možnost spustit sadu příkazů a zavřít aktivní shell, i když dávka ještě běží. | **Možnost spustit sadu příkazů a zavřít aktivní shell, i když dávka ještě běží. | ||
| − | *Cmdlet | + | *Cmdlet (Commandlet)... nativní příkaz Powershellu |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
== Syntaxe == | == Syntaxe == | ||
| − | + | * Názvy commandletů | |
| − | + | ** <code>''Sloveso''+pomlčka+''podstatné_jméno''</code> | |
| − | ** | + | ** Podstatné jméno je vždy v jednotném čísle. |
| − | ** | + | * Slovesa v názvech commandletů |
| − | * | + | ** <code>Get-</code>, <code>Set-</code> |
| − | ** | + | ** <code>Add-</code> |
| − | * | + | ** <code>Copy-</code>, <code>Remove-</code>, <code>Move-</code> |
| − | ** | + | ** <code>Import-</code>, <code>Export-</code>, <code>ConvertTo-</code> |
| − | * | + | ** <code>Start-</code>, <code>Stop-</code> |
| − | ** | + | ** Příklad: <code>Get-Help</code> |
| − | * | + | ** Výpis všech dostupných sloves: <code>Get-Verb</code> |
| − | * | + | * 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 |
| − | *** | + | ** <code>*</code>... zastupuje libovolné znaky. |
| − | ** | + | ** Lze použít i v rámci našeptávání:<br /><code>*-LocalUser</code> 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: <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 == | ||
| + | * 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 | ||
| + | <div class="Priklad"> | ||
| + | Get-Alias md | ||
| + | Výstup: | ||
| + | * md → mkdir | ||
| + | </div> | ||
| + | |||
| + | |||
| + | * Jaký příkaz zastupuje alias <code>dir</code>? | ||
| + | <div class="Priklad"> | ||
| + | Get-Alias -Name dir | ||
| + | </div> | ||
| + | |||
| + | Get-Alias -Definition ''Zastoupený-příkaz'' | ||
| + | * Jaké aliasy můžeme použít místo zadaného commandletu? | ||
| + | <div class="Priklad"> | ||
| + | Get-Alias -Definition Get-ChildItem | ||
| + | |||
| + | Výstup: | ||
| + | dir → Get-ChildItem | ||
| + | ls → Get-ChildItem | ||
| + | </div> | ||
| + | |||
| + | |||
<div class="Poznamka"> | <div class="Poznamka"> | ||
Doporučení: | Doporučení: | ||
*Pro ruční práci používejte zkrácené verze příkazů. | *Pro ruční práci používejte zkrácené verze příkazů. | ||
*Skripty pište v plné verzi. | *Skripty pište v plné verzi. | ||
| − | |||
| − | |||
| − | |||
| − | |||
</div> | </div> | ||
| + | |||
== Ovládání Powershellu == | == Ovládání Powershellu == | ||
| − | *Tabulátor &rarr doplňování příkazů | + | * <code>''Tabulátor''</code> → doplňování příkazů |
| − | *#fráze + | + | <div class="Poznamka"> |
| − | **vyhledává frázi v historii použitých příkazů | + | V našeptávači můžete použít metaznaky <code>*</code> a <code>?</code>. Například: |
| − | *Nastavení prostředí | + | *User |
| − | **Pravé tlačítko na ikonku v levé horní části okna. | + | (Bude nabízet commandlety, které mají v názvu <code>User</code>.) |
| + | </div> | ||
| + | * <code>#fráze + ''Tabulátor''</code> | ||
| + | ** 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 == | == ISE == | ||
| − | *Integrated | + | *Integrated Scripting Environment |
*Obdoba IDE pro programovací jazyky. | *Obdoba IDE pro programovací jazyky. | ||
*Má kontextovou nápovědu. | *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í. | ||
| + | |||
| + | <div class="Varovani"> | ||
| + | Některé commandlety smí použít jen správce! | ||
| + | *Vyzkoušej spuštění PS jako správce! | ||
| + | </div> | ||
| + | |||
== Zdroje == | == Zdroje == | ||
| Řádka 88: | Řádka 145: | ||
*[https://channel9.msdn.com//Series/advpowershell3/08/ Advanced Tools & Scripting with PowerShell] | *[https://channel9.msdn.com//Series/advpowershell3/08/ Advanced Tools & Scripting with PowerShell] | ||
*[http://www.powershell.org Powershell.org] | *[http://www.powershell.org Powershell.org] | ||
| + | * [https://www.itnetwork.cz/windows/powershell/powershell-pro-zacatecniky-lekce-1 ITNetwork.cz → Powershell pro začátečníky (první část kurzu zdarma, další placená)] | ||
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í:
*-LocalUsera 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í
Selectpak 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á)