Powershell: Pipelining

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Dokončení formátování, -eq místo =.)
(Výstup do souboru: Přidáno >> a -Append)
 
(Není zobrazeno 6 mezilehlých verzí od 1 uživatele.)
Řádka 18: Řádka 18:
 
== Zpracování ==
 
== Zpracování ==
  
  | Get-Methods
+
  | Get-Member
 
* Zjištění vlastností objektu, který dostane na vstupu.
 
* Zjištění vlastností objektu, který dostane na vstupu.
 
* Mohu využít jako pomocnou metodu pro zjištění, s jakými objekty pracuji.
 
* Mohu využít jako pomocnou metodu pro zjištění, s jakými objekty pracuji.
Řádka 45: Řádka 45:
  
 
  | Measure
 
  | Measure
*Počítá počet řádků
+
* Zjistí počet objektů na výstupu commandletu.
 
<div class="Priklad">
 
<div class="Priklad">
 
  Get-Verb | Measure
 
  Get-Verb | Measure
 
</div>
 
</div>
 
  
 
== Filtrování ==
 
== Filtrování ==
  | Where-object
+
  | Where-Object
| Where
+
* Commandlet pro obecné filtrování.
$_
+
* Aliasy: <code>Where</code>
*Zastupuje aktuální objekt z kolekce
+
 
  Get-Service | Where {$_.status -eq "Running"}
+
* <code>-FilterScript {''...''}</code>
{...}
+
** Je default parametr, takže stačí i: <code> {''...''}</code>
* Spustí kód v závorkách.
+
** Spustí kód v závorkách.
* Pokud vrací $true, ponechá objekt v kolekci
+
** Pokud spuštěný kód vrací pro daný objekt <code>$false</code>, <code>$null</code> nebo <code>""</code>, zahodí objekt. Jinak objekt ponechá v&nbsp;kolekci.
* Pokud vrací $false, zahodí objekt
+
 
 +
* Lze využít: <code>$_</code>
 +
** Zastupuje aktuální objekt z kolekce.
 +
** Můžeme pracovat s&nbsp;vlastnostmi tohoto objektu.
 +
<div class="Priklad">
 +
  Get-Service | Where {$_.Status -eq "Running"}
 +
</div>
 +
 
 +
* <code>-Property ''Vlastnost'' ''operátor'' ''Hodnota''</code>
 +
** Je default parametr, takže stačí i: <code>''Vlastnost'' ''operátor'' ''Hodnota''</code>
 +
<div class="Priklad">
 +
Get-Service | Where Status -eq "Running"
 +
</div>
  
 
; Operátory
 
; Operátory
Řádka 76: Řádka 87:
 
* Nejprve filtruj, pak zpracovávej! (Podobně jako v&nbsp;SQL.)
 
* Nejprve filtruj, pak zpracovávej! (Podobně jako v&nbsp;SQL.)
 
* Optimalizace výkonu.
 
* Optimalizace výkonu.
; Zjednodušená syntaxe
+
 
| Where podmínka
+
; Pro filtrování je lépe použít parametr <code>-Filter</code>
 +
* Ale ne všechny příkazy ho mají.
 
<div class="Priklad">
 
<div class="Priklad">
Get-Service | Where Status -eq "Running"
+
Místo:
 
  Get-ChildItem | Where Name -like "*.xls"
 
  Get-ChildItem | Where Name -like "*.xls"
 +
Můžeme tedy psát:
 +
Get-ChildItem -Filter "*.xls"
 +
Nebo dokonce:
 +
Get_ChildItem *.xls
 
</div>
 
</div>
 
  
 
== Výstup do souboru ==
 
== Výstup do souboru ==
 
  ... | Out-File vystup.txt
 
  ... | Out-File vystup.txt
 +
Lze použít také operátor <code>&gt;</code>, který znáte z&nbsp;příkazového řádku Linuxu a Windows:
 +
<div class="Priklad">
 +
ls *.txt | Select name, length | Out-File vystup.txt
 +
ls *.txt | Select name, length > vystup.txt
 +
</div>
  
 +
Pokud chcete obsah připojit ke stávajícímu obsahu souboru, lze použít operátor <code>&gt;&gt;</code> nebo přepínač <code>-Append</code>:
 +
 +
<div class="Priklad">
 +
echo "Ahoj" | Out-File -Append vystup.txt
 +
echo "Ahoj" >> vystup.txt
 +
</div>
  
 
== Předávání dat ==
 
== Předávání dat ==

Aktuální verze z 16. 1. 2023, 09:29


Obsah

Princip

Get-Process *ss | Where handles -gt 900 | Sort handles
Get-Service Sym* | Stop-Service -WhatIf


Zpracování

| Get-Member
| Select
Get-ChildItem | Select -Property Name,Length | Sort -Property Length -Descending
| Sort
| Measure
Get-Verb | Measure

Filtrování

| Where-Object
Get-Service | Where {$_.Status -eq "Running"}
Get-Service | Where Status -eq "Running"
Operátory
Doporučený postup
Pro filtrování je lépe použít parametr -Filter

Místo:

Get-ChildItem | Where Name -like "*.xls"

Můžeme tedy psát:

Get-ChildItem -Filter "*.xls"

Nebo dokonce:

Get_ChildItem *.xls

Výstup do souboru

... | Out-File vystup.txt

Lze použít také operátor >, který znáte z příkazového řádku Linuxu a Windows:

ls *.txt | Select name, length | Out-File vystup.txt
ls *.txt | Select name, length > vystup.txt

Pokud chcete obsah připojit ke stávajícímu obsahu souboru, lze použít operátor >> nebo přepínač -Append:

echo "Ahoj" | Out-File -Append vystup.txt
echo "Ahoj" >> vystup.txt

Předávání dat

Přijímání vstupu

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 {...}
Get-ADComputers -Filter * | Get-WMIObjects -class Win32_bios -ComputerName {$_.Name}
Mnoho příkazů umí také
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)
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje