Powershell: Základy

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Oprava části o syntaxi - doladění, uspořádání.)
(Přidáno předávání dat jako objekty a Get-Member.)
 
(Není zobrazeno 12 mezilehlých verzí od 1 uživatele.)
Řádka 2: Řádka 2:
  
 
== Úvod ==
 
== Úvod ==
* Zkratka PS
+
* Powershell je novější alternativou klasického příkazového řádku Windows.
* Snaha o jednotné ovládací rozhraní v CLI.
+
* 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.)
* Verze PowerShellu
+
 
**V3... od Win 8 a Win Srv 2012
+
; Proč je třeba rozvíjet příkazový řádek?
**V2
+
* Snaha o jednotné ovládací rozhraní v CLI.
**V1
+
* S rozvojem cloudových řešení (Microsoft Azure) rostou nároky na automatizaci provozu a vytváření serverů.
*Proč ne Bash?
+
 
**Unix je zaměřený na práci se soubory.
+
; Díky aliasům můžeme použít
**Windows je zaměřené na ovládání skrz API
+
* nativní příkazy Windows
*Díky aliasům můžeme použít:
+
* nativní příkazy Unixu (ale parametry už obvykle ne)
**nativní příkazy Windows
+
 
**nativní příkazy Unixu
+
; 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==
Řádka 20: Řádka 24:
 
**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 (Commandlet)... nativní příkaz Powershellu
 
*Cmdlet (Commandlet)... nativní příkaz Powershellu
 +
  
 
== Syntaxe ==
 
== Syntaxe ==
Řádka 31: Řádka 36:
 
** <code>Import-</code>, <code>Export-</code>, <code>ConvertTo-</code>
 
** <code>Import-</code>, <code>Export-</code>, <code>ConvertTo-</code>
 
** <code>Start-</code>, <code>Stop-</code>
 
** <code>Start-</code>, <code>Stop-</code>
** Příklad: <code>Get-help</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
 
* Přepínače... začínají pomlčkou
 
* Parametry přepínačů
 
* Parametry přepínačů
Řádka 41: Řádka 47:
 
* Metaznaky
 
* Metaznaky
 
** <code>*</code>... zastupuje libovolné znaky.
 
** <code>*</code>... zastupuje libovolné znaky.
 +
** Lze použít i v&nbsp;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
 
* 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&nbsp;atributy.
 +
* Tyto objekty lze převést na text například při výstupu na obrazovku, ale lze s&nbsp;nimi pracovat i jako s&nbsp;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&nbsp;nim zkrácené verze &mdash; aliasy.
 +
* Pokud existuje obdobný příkaz Windows nebo Linuxu, obvykle existují i&nbsp;odpovídající aliasy.
 +
 +
Get-Alias ''alias''
 +
Get-Alias -Name ''alias''
 +
* Dohledání původního příkazu k&nbsp;zadanému aliasu.
 +
* Aliasy: gal
 +
<div class="Priklad">
 +
Get-Alias md
 +
Výstup:
 +
* md &rarr; 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 &rarr; Get-ChildItem
 +
ls &rarr; Get-ChildItem
 +
</div>
 +
  
 
<div class="Poznamka">
 
<div class="Poznamka">
Řádka 48: Řádka 97:
 
*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 class="Varovani">
 
Některé commandlety smí použít jen správce!
 
*Vyzkoušej spuštění PS jako správce!
 
 
</div>
 
</div>
 +
  
 
== Ovládání Powershellu ==
 
== Ovládání Powershellu ==
 
* <code>''Tabulátor''</code> &rarr; doplňování příkazů
 
* <code>''Tabulátor''</code> &rarr; doplňování příkazů
 +
<div class="Poznamka">
 +
V&nbsp;našeptávači můžete použít metaznaky <code>*</code> a <code>?</code>. Například:
 +
*User
 +
(Bude nabízet commandlety, které mají v názvu <code>User</code>.)
 +
</div>
 
* <code>#fráze + ''Tabulátor''</code>
 
* <code>#fráze + ''Tabulátor''</code>
 
** vyhledává frázi v historii použitých příkazů
 
** vyhledává frázi v historii použitých příkazů
Řádka 62: Řádka 113:
  
 
== ISE ==
 
== ISE ==
*Integrated Servis Environment
+
*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 &mdash; je třeba ověřit verzi.
 +
* První verze uvolněna v roce 2006.
 +
* V&nbsp;roce 2021 ve Windows obvykle verze 5.1.
 +
* Až do verze 5 jako „Windows Powershell“. Verze 6 s&nbsp;názvem „Powershell Core 6.0“ již platformně nezávislá, existuje implementace pro Linux a&nbsp;macOS.
 +
* U&nbsp;verze 7 se předpokládá, že nahradí verze 6 i&nbsp;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&nbsp;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 70: Řá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 &rarr; Powershell pro začátečníky (první část kurzu zdarma, další placená)]

Aktuální verze z 9. 1. 2024, 10:23


Obsah

Úvod

Proč je třeba rozvíjet příkazový řádek?
Díky aliasům můžeme použít
Srovnání s Bashem


Pojmy


Syntaxe


Předávání výstupu

...commandlet... | Get-Member


Aliasy

Get-Alias alias
Get-Alias -Name alias
Get-Alias md

Výstup:

  • md → mkdir


Get-Alias -Name dir
Get-Alias -Definition Zastoupený-příkaz
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

V našeptávači můžete použít metaznaky * a ?. Například:

*User

(Bude nabízet commandlety, které mají v názvu User.)

ISE


Verze Powershellu

$PSversionTable
Get-Host | Select-Object Version
$host.version

Při problémech a nefunkčních návodech

Některé commandlety smí použít jen správce!

  • Vyzkoušej spuštění PS jako správce!


Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje