Sort-Object (alias sort) permet de trier les objets reçus dans le pipeline selon une ou plusieurs propriétés. Comme toutes les commandes PowerShell, il agit sur des objets, pas sur du texte.
Where-Object (alias where, ?) permet de filtrer les objets reçus dans le pipeline. Il garde uniquement les objets qui respectent une condition. C’est l’équivalent d’un “si” appliqué à chaque élément.
<commande> | Where-Object { <condition> }
Dans le bloc { ... }, l’objet courant du pipeline est représenté par $_.
Get-ChildItem -File | Where-Object { $_.Length -gt 1MB }
-gt signifie “greater than” (strictement plus grand).
💡 Note : que signifient 1MB, 100KB... dans PowerShell ? PowerShell accepte directement des unités de taille dans les comparaisons. Elles sont converties automatiquement en nombre d’octets.
Get-ChildItem | Where-Object { $_.Extension -eq ".txt" }
-eq signifie “equal”.
Get-Process | Where-Object { $_.CPU -gt 10 }
| Opérateur | Signification |
|---|---|
-eq |
égal |
-ne |
différent |
-gt |
> (plus grand) |
-ge |
≥ (plus grand ou égal) |
-lt |
< (plus petit) |
-le |
≤ (plus petit ou égal) |
-like |
correspondance (avec *) |
-in |
liste à vérifier ("msi", "Programs") |
Get-ChildItem -File |
Where-Object { $_.Length -gt 1MB -and $_.Extension -eq ".log" }
Chaque objet du pipeline est évalué individuellement, et n’est conservé que s’il respecte toutes les conditions définies dans le bloc.
Les opérateurs logiques -and, -or et -not permettent de combiner plusieurs tests, ce qui n’est pas possible avec la version courte de la commande.
Filtrer sur plusieurs conditions nécessite d’utiliser la version complète (longue) de Where-Object, avec des accolades { }.
Where-ObjectPowerShell propose une version courte de Where-Object qui permet d’écrire des filtres simples de manière plus lisible, par exemple : Where ProviderName -eq "msi".
Dans ce cas, PowerShell interprète automatiquement la commande comme s’il s’agissait de Where-Object { $_.ProviderName -eq "msi" }.
Cette syntaxe abrégée fonctionne uniquement pour une condition simple portant sur une seule propriété avec un seul opérateur. Dès que la condition devient plus complexe (utilisation de -or, -and, plusieurs propriétés ou des calculs), il est nécessaire de revenir à la forme complète avec des accolades { }.
| Besoin | Exemple |
|---|---|
| Filtrer un élément sur une propriété | where { $_.Name -eq "test" } |
| Comparaison numérique | where { $_.Length -gt 1000 } |
| Comparaison textuelle | where { $_.Extension -eq ".jpg" } |
| Plusieurs conditions | -and, -or, -not |