Powershell: Pipelining
Z MiS
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
- Aliasy:
- gm
- Vypisuje:
- Typ objektu
- Dobré, abych zjistil, s čím pracuji!
- Název, typ a popis atributů (properties)
- Název a popis metod
- Typ objektu
- Aliasy:
- | Select
- -property
- Zobrazí vybrané vlastnosti objektu
- get-childitem | select -property name,length | sort -property length -Descending
- -ExpandProperty
- Skoro stejné jako -Property <#ID_1153443337>
- Dostanu jen hodnoty, bez nadpisu s názvem hodnoty
- Vhodné pro použití uvnitř (...) <#ID_1421125970>
- -First N
- Prvních N položek
- -property
- | 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
- -gt
- -like
- Logické
- -and
- Porovnání
- Nejprve filtruj, pak zpracovávej
- Optimalizace výkonu
- Zjednodušená syntaxe
- | Where podmínka
- | Where Status="Running"
- Funguje jen pro služby, nebo nefunguje???
- Get-ChildItem | Where Name -like "*.xls"
- $_
Výstup do souboru
- ... | Out-File blabla.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
- Get-Process calc | dir
- by value
- Předávání počítačů
- Get-ADComputers
- Nelze je předávat jako objekty přímo.
- Lze použít {...}:
- Get-ADComputers -Filter * | Get-WMIObjects -class Win32_bios -ComputerName {$_.Name}
- Mnoho příkazů umí:
- -ComputerName
- Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *).Name
- PS 2.0
- Lze kombinovat se závorkou a:
- -ExpandProperty
- Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *| Select -ExpandProperty name)
- Lze kombinovat se závorkou a: