Powershell: Pipelining
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (Vytvoření stránky - zatím bez formátování.) |  (Upraveno formátování.) | ||
| Řádka 17: | Řádka 17: | ||
| == Zpracování == | == Zpracování == | ||
| − | + | ||
| − | * | + |  | Get-Methods | 
| − | * | + | * Zjištění vlastností objektu, který dostane na vstupu. | 
| − | + | * Mohu využít jako pomocnou metodu pro zjištění, s jakými objekty pracuji. | |
| − | + | *Vypisuje: | |
| − | + | **Typ objektu | |
| − | + | **Název, typ a popis atributů (properties) | |
| − | + | **Název a popis metod | |
| − | *| Select | + | * Alias: <code>gm</code> | 
| − | + | ||
| − | + |  | Select | |
| − | * | + | * Zobrazí pouze některé vlastnosti objektů (projekce). | 
| − | * | + | * <code>-Property ''PropertyName1'',''PropertyName2'',''...''</code> | 
| − | + | <div class="Priklad"> | |
| − | + |  Get-ChildItem | Select -Property Name,Length | Sort -Property Length -Descending | |
| − | + | </div> | |
| − | * | + | * <code>-ExpandProperty</code> | 
| − | + | ** Skoro stejné jako <code>-Property</code>, ale nezobrazuje nadpisy sloupců, pouze hodnoty. | |
| − | + | ** Vhodné pro použití uvnitř <code>(...)</code> | |
| − | * | + | * <code>-First ''N''</code> | 
| − | * | + | ** Prvních <code>''N''</code> položek. | 
| − | + | ||
| − | + |  | Sort | |
| − | + | * <code>-Descending</code> | |
| − | + | * <code>-Property ''PropertyName''</code> | |
| + | ** Podle čeho se bude řadit. | ||
| + | |||
| + |  | Measure | ||
| + | *Počítá počet řádků | ||
| + | <div class="Priklad"> | ||
| + |  Get-Verb | Measure | ||
| + | </div> | ||
| == Filtrování == | == Filtrování == | ||
| − | + |  | Where-object | |
| − | + |  | Where | |
| − | + |  $_ | |
| − | + | *Zastupuje aktuální objekt z kolekce | |
| − | + |  Get-Service | Where {$_.status = "Running"} | |
| − | + |  {...} | |
| − | + | * Spustí kód v závorkách. | |
| − | + | * Pokud vrací $true, ponechá objekt v kolekci | |
| − | + | * Pokud vrací $false, zahodí objekt | |
| − | + | ||
| − | + | ; Operátory | |
| − | ** | + | * Porovnání | 
| − | ****- | + | ** <code>-eq</code>... přesná rovnost (pro textové řetězce → musí se přesně shodovat) | 
| − | **** | + | ** <code>-gt</code> | 
| − | ***Logické | + | ** <code>-like</code>... „podobnost“  | 
| − | ** | + | *** Pro textové řetězce → text musí obsahovat zadanou posloupnost jako podřetězec.  | 
| − | **Nejprve filtruj, pak zpracovávej | + | *** Umožní používat metaznaky <code>*</code> a <code>?</code>. | 
| − | + | *** Podobné jako v SQL. | |
| − | + | * Logické operátory | |
| − | + | ** <code>-and</code> | |
| − | + | ** ... | |
| − | + | ; Doporučený postup | |
| − | + | * Nejprve filtruj, pak zpracovávej! (Podobně jako v SQL.) | |
| + | * Optimalizace výkonu. | ||
| + | ; Zjednodušená syntaxe | ||
| + |  | Where podmínka | ||
| + |  | Where Status="Running" | ||
| + |  Get-ChildItem | Where Name -like "*.xls" | ||
| == Výstup do souboru == | == Výstup do souboru == | ||
| − | + |  ... | Out-File vystup.txt | |
| == Předávání dat == | == Předávání dat == | ||
| − | *Commandlety mají v nápovědě informaci, jestli přijímají vstup z pipeline | + | *Commandlety mají v nápovědě informaci, jestli přijímají vstup z pipeline. | 
| − | + | ||
| − | + | ; Přijímání vstupu | |
| − | + | *by value | |
| − | + | **Přímo předáváme objekty | |
| − | + | **Typ objektů si musí odpovídat. | |
| − | + | *by Property Name | |
| − | + |  Get-Process calc | dir | |
| − | + | *Spusť předtím kalkulačku | |
| − | + | *Zobrazí obsah adresáře, ve kterém je program, který realizuje proces Calc | |
| − | * | + | |
| − | ** | + | ; Předávání počítačů | 
| − | **Lze použít {...}: | + | * Příklad: <code>Get-ADComputers</code> | 
| − | + | ** Počítače nelze předávat jako objekty přímo. | |
| − | + | ** Lze použít <code>{...}</code>: | |
| − | ** | + | <div class="Priklad"> | 
| − | + |  Get-ADComputers -Filter * | Get-WMIObjects -class Win32_bios -ComputerName {$_.Name} | |
| − | + | </div> | |
| − | + | * Mnoho příkazů umí také: | |
| − | + | ** <code>-ComputerName</code> | |
| − | + | <div class="Priklad"> | |
| + | Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *).Name | ||
| + | </div> | ||
| + | |||
| + | ; Lze kombinovat se závorkou a: | ||
| + |  -ExpandProperty | ||
| + | <div class="Priklad"> | ||
| + |  Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *| Select -ExpandProperty name) | ||
| + | </div> | ||
Verze z 7. 1. 2019, 07:01
| Obsah | 
Princip
- Propojujeme několik příkazů tak, aby jeden příkaz předával svůj výstup místo na obrazovku dalšímu příkazu ke zpracování.
- Na obrazovku se vypíše až výsledek celé posloupnosti příkazů.
-  Zapisujeme tak, že mezi jednotlivé příkazy posloupnosti zapíšeme znak |.-  |... znak „roura“, anglicky „pipe“
 
-  
-  Příkazy si předávají objekty, nikoli text!
- (Na rozdíl od Unixu a příkazového řádku Windows.)
 
Get-Process *ss | Where handles -gt 900 | Sort handles Get-Service Sym* | Stop-Service -WhatIf
Zpracování
| Get-Methods
- Zjištění vlastností objektu, který dostane na vstupu.
- Mohu využít jako pomocnou metodu pro zjištění, s jakými objekty pracuji.
- Vypisuje:
- Typ objektu
- Název, typ a popis atributů (properties)
- Název a popis metod
 
-  Alias: gm
| Select
- Zobrazí pouze některé vlastnosti objektů (projekce).
-  -Property PropertyName1,PropertyName2,...
Get-ChildItem | Select -Property Name,Length | Sort -Property Length -Descending
-  -ExpandProperty-  Skoro stejné jako -Property, ale nezobrazuje nadpisy sloupců, pouze hodnoty.
-  Vhodné pro použití uvnitř (...)
 
-  Skoro stejné jako 
-  -First N-  Prvních Npoložek.
 
-  Prvních 
| Sort
-  -Descending
-  -Property PropertyName- Podle čeho se bude řadit.
 
| Measure
- Počítá počet řádků
Get-Verb | Measure
Filtrování
| Where-object | Where $_
- Zastupuje aktuální objekt z kolekce
Get-Service | Where {$_.status = "Running"}
{...}
- Spustí kód v závorkách.
- Pokud vrací $true, ponechá objekt v kolekci
- Pokud vrací $false, zahodí objekt
- Operátory
-  Porovnání
-  -eq... přesná rovnost (pro textové řetězce → musí se přesně shodovat)
-  -gt
-  -like... „podobnost“- Pro textové řetězce → text musí obsahovat zadanou posloupnost jako podřetězec.
-  Umožní používat metaznaky *a?.
- Podobné jako v SQL.
 
 
-  
-  Logické operátory
-  -and
- ...
 
-  
- Doporučený postup
- Nejprve filtruj, pak zpracovávej! (Podobně jako v SQL.)
- Optimalizace výkonu.
- Zjednodušená syntaxe
| Where podmínka | Where Status="Running" Get-ChildItem | Where Name -like "*.xls"
Výstup do souboru
... | Out-File vystup.txt
Předávání dat
- Commandlety mají v nápovědě informaci, jestli přijímají vstup z pipeline.
- Přijímání vstupu
- by value
- Přímo předáváme objekty
- Typ objektů si musí odpovídat.
 
- by Property Name
Get-Process calc | dir
- Spusť předtím kalkulačku
- Zobrazí obsah adresáře, ve kterém je program, který realizuje proces Calc
- Předávání počítačů
-  Příklad: Get-ADComputers- Počítače nelze předávat jako objekty přímo.
-  Lze použít {...}:
 
Get-ADComputers -Filter * | Get-WMIObjects -class Win32_bios -ComputerName {$_.Name}
-  Mnoho příkazů umí také:
-  -ComputerName
 
-  
Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *).Name
- Lze kombinovat se závorkou a
-ExpandProperty
Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *| Select -ExpandProperty name)
