Powershell: Pipelining

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Vytvoření stránky - zatím bez formátování.)
 
(Upraveno formátování.)
Řádka 17: Řádka 17:
  
 
== Zpracování ==
 
== Zpracování ==
*| Get-methods
+
 
**Aliasy:
+
| Get-Methods
***gm
+
* Zjištění vlastností objektu, který dostane na vstupu.
**Vypisuje:
+
* Mohu využít jako pomocnou metodu pro zjištění, s jakými objekty pracuji.
***Typ objektu
+
*Vypisuje:
****Dobré, abych zjistil, s čím pracuji!
+
**Typ objektu
***Název, typ a popis atributů (properties)
+
**Název, typ a popis atributů (properties)
***Název a popis metod
+
**Název a popis metod
*| Select
+
* Alias: <code>gm</code>
**-property
+
 
***Zobrazí vybrané vlastnosti objektu
+
| Select
***get-childitem | select -property name,length | sort -property length -Descending
+
* Zobrazí pouze některé vlastnosti objektů (projekce).
**-ExpandProperty
+
* <code>-Property ''PropertyName1'',''PropertyName2'',''...''</code>
***Skoro stejné jako -Property <#ID_1153443337>
+
<div class="Priklad">
***Dostanu jen hodnoty, bez nadpisu s názvem hodnoty
+
Get-ChildItem | Select -Property Name,Length | Sort -Property Length -Descending
***Vhodné pro použití uvnitř (...) <#ID_1421125970>
+
</div>
**-First N
+
* <code>-ExpandProperty</code>
***Prvních N položek
+
** Skoro stejné jako <code>-Property</code>, ale nezobrazuje nadpisy sloupců, pouze hodnoty.
*| Sort
+
** Vhodné pro použití uvnitř <code>(...)</code>
**-Descending
+
* <code>-First ''N''</code>
**-Property propertyName
+
** Prvních <code>''N''</code> položek.
***Podle čeho se bude řadit
+
 
*| Measure
+
| Sort
**Počítá počet řádků
+
* <code>-Descending</code>
**Get-Verb | Measure
+
* <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-object
*| Where
+
| Where
**$_
+
$_
***Zastupuje aktuální objekt z kolekce
+
*Zastupuje aktuální objekt z kolekce
***Get-Service | Where {$_.status = "Running"}
+
Get-Service | Where {$_.status = "Running"}
**{...}
+
{...}
***Spustí kód v závorkách.
+
* Spustí kód v závorkách.
***Pokud vrací $true, ponechá objekt v kolekci
+
* Pokud vrací $true, ponechá objekt v kolekci
***Pokud vrací $false, zahodí objekt
+
* Pokud vrací $false, zahodí objekt
**Operátory
+
 
***Porovnání
+
; Operátory
****-eq
+
* Porovnání
****-gt
+
** <code>-eq</code>... přesná rovnost (pro textové řetězce &rarr; musí se přesně shodovat)
****-like
+
** <code>-gt</code>
***Logické
+
** <code>-like</code>... „podobnost“
****-and
+
*** Pro textové řetězce &rarr; text musí obsahovat zadanou posloupnost jako podřetězec.
**Nejprve filtruj, pak zpracovávej
+
*** Umožní používat metaznaky <code>*</code> a <code>?</code>.
***Optimalizace výkonu
+
*** Podobné jako v&nbsp;SQL.
**Zjednodušená syntaxe
+
* Logické operátory
***| Where podmínka
+
** <code>-and</code>
***| Where Status="Running"
+
** ...
****Funguje jen pro služby, nebo nefunguje???
+
; Doporučený postup
***Get-ChildItem | Where Name -like "*.xls"
+
* Nejprve filtruj, pak zpracovávej! (Podobně jako v&nbsp;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 blabla.txt
+
... | 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&nbsp;pipeline.
*Přijímání vstupu
+
 
**by value
+
; Přijímání vstupu
***Přímo předáváme objekty
+
*by value
***Typ objektů si musí odpovídat.
+
**Přímo předáváme objekty
**by Property Name
+
**Typ objektů si musí odpovídat.
***Get-Process calc | dir
+
*by Property Name
****Spusť předtím kalkulačku
+
Get-Process calc | dir
****Zobrazí obsah adresáře, ve kterém je program, který realizuje proces Calc
+
*Spusť předtím kalkulačku
*Předávání počítačů
+
*Zobrazí obsah adresáře, ve kterém je program, který realizuje proces Calc
**Get-ADComputers
+
 
**Nelze je předávat jako objekty přímo.
+
; Předávání počítačů
**Lze použít {...}:
+
* Příklad: <code>Get-ADComputers</code>
***Get-ADComputers -Filter * | Get-WMIObjects -class Win32_bios -ComputerName {$_.Name}
+
** Počítače nelze předávat jako objekty přímo.
**Mnoho příkazů umí:
+
** Lze použít <code>{...}</code>:
***-ComputerName
+
<div class="Priklad">
***Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *).Name
+
Get-ADComputers -Filter * | Get-WMIObjects -class Win32_bios -ComputerName {$_.Name}
***PS 2.0
+
</div>
****Lze kombinovat se závorkou a:
+
* Mnoho příkazů umí také:
*****-ExpandProperty
+
** <code>-ComputerName</code>
****Get-WMIObjects -class Win32_bios -ComputerName (Get-ADComputers -Filter *| Select -ExpandProperty name)
+
<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

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


Zpracování

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


Filtrování

| Where-object
| Where
$_
Get-Service | Where {$_.status = "Running"}
{...}
Operátory
Doporučený postup
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

Přijímání vstupu
Get-Process calc | dir
Předávání počítačů
Get-ADComputers -Filter * | Get-WMIObjects -class Win32_bios -ComputerName {$_.Name}

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