Le pipeline et les objets
La différence fondamentale entre PowerShell et les shells UNIX est la nature du pipeline. En Bash, | transporte du texte. En PowerShell, | transporte des objets .NET avec des propriétés et des méthodes.
Pourquoi les objets changent tout
# UNIX : parse du texte pour extraire le PID
ps aux | grep firefox | awk '{print $2}'
# PowerShell : accès direct à la propriété Id
Get-Process firefox | Select-Object -ExpandProperty Id
Pas de parsing fragile. Si Microsoft renomme une colonne dans la sortie texte, votre script Bash casse. Si Microsoft renomme une propriété objet, PowerShell émet une erreur explicite.
Select-Object : filtrer les propriétés
# Afficher uniquement Name et CPU des processus
Get-Process | Select-Object Name, CPU, WorkingSet
# Créer une propriété calculée
Get-Process | Select-Object Name, @{Name='RAM_MB'; Expression={[math]::Round($_.WorkingSet / 1MB, 2)}}