PowerShell - Présentation de la syntaxe basique de Where-Object et de ses limites

2 min de lecture · Mis à jour le 26 août 2024

Ce guide vous a servi ? Vous pouvez me soutenir en vous abonnant à la chaîne, en partageant, en désactivant votre bloqueur de pub ou en faisant un don. Merci !

La syntaxe basique/simplifiée apparue avec Windows PowerShell 3 est plus simple à appréhender mais plus limitée que la syntaxe standard/avancée.

Dans mes tests, elle est aussi légèrement plus rapide en PowerShell 7 (7.4.4) et moins en Windows PowerShell 5.1.

# Syntaxe standard/avancée
Get-Service | Where-Object -FilterScript { $_.Status -eq 'running' }
# Syntaxe basique/simplifiée
Get-Service | Where-Object -Property Status -eq 'running'
# Mais on les voit le plus souvent cette forme (sans l'argument après Where-Object)
Get-Service | Where-Object { $_.Status -eq 'running' }
Get-Service | Where-Object Status -eq 'running'

Mais la syntaxe basique possède quelques limitations.

La syntaxe de base ne peut être utilisée que pour une seule comparaison.

# Cette syntaxe ne fonctionne pas
Get-Service | Where-Object -Property Status -eq 'running' -and StartType -eq 'Automatic'
# Il est nécessaire d'utiliser la syntaxe standard
Get-Service | Where-Object -FilterScript {$_.Status -eq 'running' -and $_.StartType -eq 'Automatic'}

On ne peut pas utiliser une propriété de propriété avec la syntaxe de base.

# Cette syntaxe ne fonctionne pas
Get-Process | Where-Object -Property Name.Length -lt 5
# Il est nécessaire d'utiliser la syntaxe standard
Get-Process| Where-Object -FilterScript { $_.Name.Length -lt 5 }

Liens en relation

Suivez-moi sur

Soutenez-moi

Buy Me a Coffee at ko-fi.com

La boutique · Deco-3D

Du relief dans vos affiches

Affiches imprimées couche par couche à Nantes : les couleurs se superposent et l'image prend du volume.

Voir la boutique Livraison offerte en point relais dès 60 € (France)