V tomto díle si představíme, jak funguje objektová PipeLine v PowerShellu. 
  Pokud nejste s principe fungování PipeLine seznámení z jiných jazyků (například již zmiňovaný bash), pak vězte, že myšlenka je velmi jednoduchá. Jedná v podstatě o přeposlání výstupu z jednoho příkazu (CmdLetu) na vstup druhého příkazu (CmdLetu). Jak již sám název napovídá, můžete si PipeLine představit jako kdybyste propojili dva příkazy trubkou a tou trubkou posílali data. Jedná se o jednosměrnou komunikaci.
  PipeLIne má značku | a její použití si ukážeme v následujícím příkladu. Tento příklad vypíše všechny txt soubory v adresáři a smaže je.
   Get-ChildItem *.txt | Remove-Item
Výhodou je, že narozdíl od bashe, či většiny unixových shellů PowerShell je objektový. To znamená, že zatímco v linuxu vám skrz PipeLine “přiteče” do dalšího příkazu pouhý text, který musíte složitě parsovat a upravovat, v PowerShellu tečou objekty. K aktuálně zpracovávanému objektu se dostaneme pomocí speciální proměnné $_.Nejste-li si jistí, jakého typu je objekty, který vám přiteče, můžete použít příkaz get-member. Následující příkaz vypíše všechny vlastnosti souboru, které můžete volat/vypsat.
 Get-ChildItem | Get-Member
Filtrování dat
Velmi často budete chtít data profiltrovat. K tomu slouží příkaz where-object, případně jeho alias ?. Podmínku píšete do složených závorek. PowerShell má následující logické operátory:
    
      | Operátor | 
      C# ekvivalent | 
      Popis | 
    
    
      | -eq | 
      == | 
      obě strany jsou si rovny | 
    
    
      | -ne | 
      != | 
      strany si nejsou rovny | 
    
    
      | -le | 
      <= | 
      levá strana menší, nebo rovna pravé | 
    
    
      | -lt | 
      < | 
      levá strana menší, než pravá | 
    
    
      | -ge | 
      >= | 
      levá strana větší, nebo rovna pravé | 
    
    
      | -gt | 
      > | 
      levá strana větší, než pravá | 
    
    
      | -like | 
        | 
      porovná levou stranu oproti masce (* libovolný počet znaků, ? právě 1 libovolný znak) | 
    
    
      | -notlike | 
        | 
      jako –like , ovšem negovaný | 
    
    
      | -match | 
        | 
      porovná levou stranu oproti regulárnímu výrazu | 
    
    
      | -notmatch | 
        | 
      jako –match , ale negovaný | 
    
  
 
Následující příkaz zjistí běžící procesy a vyfiltruje z nich pouze ty, které zabírají více jak 50MB paměti.
 Get-Process | ?{$_.PM -gt 50000000}
Nyní bysme ještě chtěli výsledky setřídit, abychom měli přehled o největších žroutech.
 Get-Process | ?{$_.PM -gt 50000000} | Sort-Object -Property PM
Další velmi užitečný příkazem je Foreach-Object. Tento příkaz projde postupně všemi daty, která přitekla a provede na nich blok příkazu. Následující příkaz vytvoří soubory pojmenované 1-10.
Poznámka: příkaz 1..10 vytvoří pole čísel od 1 do 10ti.
  1..10 | ForEach-Object {New-Item -ItemType file -name $_}
Formátování výstupu
V první řadě bych rád zmínil několik příkazů, které slouží pro vypsání hlášek na konzoli/do výstupu.
 Write-Host "hello world" #vypíše na konzoli, ovšem nepřepošle objekt dále PipeLine
 Write-Output "hello world" #pošle objekt skrze PipeLine
Pro formátování výstupu slouží příkazy Format-Table a Format-List.
 gps | Sort-Object -Property name | Format-Table -GroupBy name #vypíše procesy ve více tabulkách rozdělených dle jména
 gps | Format-Table -Property name, PM #vypíše procesy a zobrazí u nich pouze název a spotřebovávanou paměť
 gps | format-table ProcessName,@{Label="TotalRunningTime"; Expression={(get-date) - $_.StartTime}} #zobrazí procesy a zobrazí u nich název a TotalRunningTime, který je vypočítáván
 
 ls | Format-List #vypíše seznam souborů, ale informace o nich zobrazí jako list
 gps | Format-List -Property name,@{Label="Memory";Expression={$_.PM}}#vypíše seznam procesů a zobrazí pouze vlastnosti Name a PM, kde PM přejmenuje na "Memory"
Chcete-li použít “hezčí” zobrazení, můžete použít příkaz Out-Gridview, který vám umožní v GUI třídit a filtrovat.
 gps | Out-GridView
Poslední dva příkazy pro práci s výstupem, které si ukážeme jsou Out-File a Out-Printer.
 gps | Out-File procesy.txt #uloží seznam běžících procesů do souboru procesy.txt
 gps | Format-List -Property name |Out-Printer -Name 'Microsoft XPS Document Writer' #vytiskne seznam běžících procesů (pouze jméno)