Powershell: Základy

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(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 ==
* 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==
 
*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
**~ nativní příkaz PS
+
 
**Commandlet
+
**Proč ne příkaz (command):
+
***Při vyhledávání je to specifické pro Powershell.
+
*Sady přepínačů
+
**Některé kombinace přepínačů pracují spolu.
+
**Jiné přepínače nelze kombinovat.
+
*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
+
  
 
== Syntaxe ==
 
== Syntaxe ==
*Konvence
+
* Názvy commandletů
**Názvy commandletů
+
** <code>''Sloveso''+pomlčka+''podstatné_jméno''</code>
***Verb+pomlčka+noun
+
** Podstatné jméno je vždy v jednotném čísle.
***podstatné jméno vždy v jednotném čísle
+
* Slovesa v názvech commandletů
***Příklad:
+
** <code>Get-</code>, <code>Set-</code>
****Get-help
+
** <code>Add-</code>
*Metaznaky
+
** <code>Copy-</code>, <code>Remove-</code>, <code>Move-</code>
***
+
** <code>Import-</code>, <code>Export-</code>, <code>ConvertTo-</code>
*Více příkazů na jednom řádku
+
** <code>Start-</code>, <code>Stop-</code>
**Oddělíme středníkem
+
** Příklad: <code>Get-Help</code>
*Slovesa
+
** Výpis všech dostupných sloves: <code>Get-Verb</code>
**Všechny:
+
* Přepínače... začínají pomlčkou
***Get-Verb
+
* Parametry přepínačů
**.
+
** Přepínač může mít více parametrů oddělených čárkou
***Get-
+
* Sady přepínačů
***Set-
+
** Některé kombinace přepínačů mohou fungovat spolu.
**.
+
** Jiné přepínače nelze kombinovat.
***Add-
+
 
***Copy-
+
* Metaznaky
***Remove-
+
** <code>*</code>... zastupuje libovolné znaky.
***Move-
+
** 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
***Import-
+
* Case-insensitive... Nerozlišují se malá a velká písmena
***Export-
+
 
***ConvertTo-
+
 
**.
+
== Předávání výstupu ==
***Start-
+
* 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.
***Stop-
+
* 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.
*Case-insensitive
+
 
 +
''...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">
 
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 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 ==
*Tabulátor &rarr doplňování příkazů
+
* <code>''Tabulátor''</code> &rarr; doplňování příkazů
*#fráze + Tab
+
<div class="Poznamka">
**vyhledává frázi v historii použitých příkazů
+
V&nbsp;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 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 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 &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