Trois postes reviennent dans presque toutes les chaînes de montage de Nordika. Sophie les appelle « le trio de base » : à eux seuls, ils permettent déjà de répondre à la majorité des tickets du quotidien.
Where-Object : le poste de contrôle qualité
Where-Object ne garde que les pièces qui remplissent une condition. Tout ce qui ne correspond pas est retiré du tapis.
Get-Service | Where-Object { $_.Status -eq "Running" }Depuis PowerShell 3.0, il existe aussi une syntaxe simplifiée, sans $_ ni accolades, pour les conditions simples :
Get-Service | Where-Object Status -eq "Running"Les deux écritures sont équivalentes ; la syntaxe avec $_ reste indispensable dès que la condition se complique (plusieurs critères, calculs…) :
Get-Service | Where-Object { $_.Status -eq "Running" -and $_.StartType -eq "Automatic" }Les opérateurs de comparaison PowerShell s’écrivent avec un tiret, pas avec les symboles habituels :
| Opérateur | Signification |
|---|---|
-eq | égal à |
-ne | différent de |
-gt / -lt | supérieur / inférieur à |
-like | correspond à un motif (avec *) |
-match | correspond à une expression régulière |
Sort-Object : le poste de classement
Sort-Object réordonne les pièces selon une propriété précise.
Get-Process | Sort-Object -Property WS -DescendingSans -Descending, le tri se fait par défaut du plus petit au plus grand. On peut aussi trier sur plusieurs propriétés à la fois, dans l’ordre de priorité indiqué :
Get-Service | Sort-Object -Property Status, DisplayNameIci, les services sont d’abord regroupés par Status, puis triés par nom à l’intérieur de chaque groupe.
Select-Object : le poste d’emballage final
Select-Object sert à deux choses bien différentes, souvent confondues au début.
1. Limiter le nombre de pièces (avec -First ou -Last) :
Get-Process | Sort-Object -Property WS -Descending | Select-Object -First 52. Ne garder que certaines propriétés d’un objet (avec -Property) :
Get-Process | Select-Object -Property ProcessName, Id, WSCe deuxième usage est essentiel : il permet de créer un objet « allégé », ne contenant que les informations utiles, pratique avant d’exporter un résultat en CSV par exemple (on verra ça en section 4).
Le trio assemblé : un vrai ticket Nordika
Sophie vous donne enfin un ticket complet : « Affiche les 5 services arrêtés qui devraient normalement démarrer automatiquement, avec juste leur nom et leur statut. »
Get-Service |
Where-Object { $_.Status -eq "Stopped" -and $_.StartType -eq "Automatic" } |
Select-Object -Property DisplayName, Status |
Select-Object -First 5Quatre postes, un tapis roulant, un résultat propre et exploitable — sans une seule ligne de code compliquée.
Un repère simple pour ne jamais confondre ces trois postes :
Where-Objectretire des lignes,Sort-Objectréordonne les lignes,Select-Objectretire des colonnes ou limite le nombre de lignes. Ce sont trois opérations différentes, qu’on combine mais qu’on ne substitue jamais l’une à l’autre.