Pineline och filtrering

En pipeline i PowerShell är en sekvens av cmdlets som kopplas ihop för att bearbeta objekt. Istället för att spara resultatet av en cmdlet i en variabel och sedan mata in den i nästa cmdlet, kan du använda pipelinen för att direkt överföra resultat från en cmdlet som indata till nästa cmdlet. Detta gör det möjligt att utföra en serie av operationer utan att behöva lagra och hantera mellanresultat.

En pipeline representeras i tangentbordet som en vertikal kort streck. Du behöver använda tangenterna Alt Gr och pipeline.

Exempel:

  1. Ta fram alla text-filer som finns i c:
    • PS C:\>Get-ChildItem ”C:\Users\ASUS\Documents” | Where-Object {$_.Extension -eq ”.docx”} | Select-Object Name, Length
    • Utdata: en lista över alla Word-dokument som finns i katalogen Documents. Get-ChildItem hämtar all information om objekten och Where-Object filtrerar endast filer som har filändelsen docx (uttrycket $_. är en alias till PSItem som behandlar objekt och skickar det iväg till nästa cmdlet.
  2. Vilka process som är igång är större än 100 MB?
    • PS C:\>Get-Process | Where-Object {$_.WorkingSet -gt 100MB}
    • Utdata: en tabell med information om processerna som är större än 100MB. Se tredje kolumnen WS (M)
  3. Räkna antal filer och kataloger
    • PS C:\>Get-ChildItem
    • ”C:\Users\ASUS\Documents” | Measure-Object
    • Utdata: en lista med antal filer och kataloger
  4. Filtrering av tjänster som är igång eller ”Running”
    • PS C:\>Get-Service | Where-Object { $_.Status -eq ’Running’ }
    • Utdata: en lista över alla tjänster som är igång i systemet
  5. Vilka program har installeras i datorn?
    • PS C:\>Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Sort-Object DisplayName
    • Utdata: en lista över alla installerade program och deras version
  6. Exekverar man Get-ChildItem får man som resultat flera rader med information på befintliga filer och mappar. Resultatet kan formateras i stället i kolumner så här:
    • PS C:\>Get-ChildItem | Format-Wide -Property FullName -column 3
    • Utdata: Tre kolumner med information om objektens fullständiga namn.
  7. När skapades objekten och när var den senast ändring och åtkomst?
    • PS C:\>Get-ChildItem | Select-Object -First 2 | Sort-Object LastWriteTime | Format-list
    • Utdata: en formaterad lista med information av två object.
  8. Jag hämtar information om vilka processer är igång i min dator och skickar resultatet (objektet) vidare till Measure-Object för vidare behandling som resulterar i antal ord, rader och bokstäver:
    • PS C:\>Get-Process -Name pwsh | Set-Content -Path C:\PShell\Nu_process.txt
    • PS C:\>Get-Content -Path c:\PShell\Nu_process.txt | Measure-Object -Word -Line -Character
    • Utdata: en tabell med fyra kolumner: Lines (201), Words (405), Characters (7536), Property