Utilisation de la commande Where-Object dans PowerShell
-
la cmdlet
Where-Object
dans PowerShell - Création de conditions de filtre avec des blocs de script dans PowerShell
- Création de conditions de filtre avec des paramètres dans PowerShell
- Utilisation de plusieurs instructions conditionnelles
Lorsque vous travaillez avec des propriétés Windows PowerShell dans une collection d’objets, vous aurez parfois besoin d’un moyen de filtrer toutes les choses spécifiques dont vous avez uniquement besoin. Par conséquent, savoir utiliser la cmdlet Windows PowerShell Where-Object
est une technique essentielle à avoir dans vos compétences Windows PowerShell.
la cmdlet Where-Object
est une commande précieuse pour filtrer les objets. Dans cet article, nous allons apprendre plusieurs manières de construire une commande Where-Object
, sa syntaxe et l’utilisation de plusieurs instructions conditionnelles.
la cmdlet Where-Object
dans PowerShell
Le seul objectif de la cmdlet Windows PowerShell Where-Object
est de filtrer la sortie d’une commande et de renvoyer des informations spécifiques que nous voulons imprimer.
En résumé, la cmdlet Where-Object
est un filtre. Il nous permet de construire une condition qui renvoie soit True
soit False
. Selon le résultat de la situation, la cmdlet renvoie ou non la sortie.
Vous pouvez créer cette condition de deux manières : blocs de script et paramètres.
Création de conditions de filtre avec des blocs de script dans PowerShell
Les blocs de script sont un composant essentiel de Windows PowerShell. Ils sont utilisés dans des centaines d’endroits à travers le langage de script. Un bloc de script est une fonction anonyme qui catégorise le code et l’exécute à divers endroits.
Exemple de bloc de script :
{$_.StartType -EQ 'Automatic'}
À l’aide du pipeline Windows PowerShell, vous pouvez ensuite diriger ces objets vers la cmdlet Where-Object
et utiliser le paramètre FilterScript
. Puisque le paramètre FilterScript
accepte un bloc de script, nous pouvons créer une condition pour vérifier si la propriété de chaque objet est égale ou non à la valeur spécifique, comme dans l’exemple ci-dessous.
Exemple de code :
Get-Service | Where-Object -FilterScript {$_.StartType -eq 'Automatic'}
Remarque : de nombreuses personnes utilisent des paramètres positionnels avec la cmdlet Where-Object
et n’incluent pas le nom du paramètre FilterScript
. Au lieu de cela, ils fournissent le bloc de script seul comme Where-Object {$_.StartType -eq 'Automatic'}
pour une méthode de script plus rapide et plus propre.
Bien que ce type de syntaxe fonctionne pour ce scénario particulier, le concept d’un bloc de script avec les accolades ({}
) rend le code moins lisible et plus difficile pour les utilisateurs moins expérimentés de Windows PowerShell. Ce problème de lisibilité a amené l’équipe Windows PowerShell à introduire des paramètres.
Création de conditions de filtre avec des paramètres dans PowerShell
Introduits dans Windows PowerShell 3.0, les paramètres ont un flux plus naturel quant à la façon dont ils sont écrits. En utilisant le même exemple précédent, utilisons des paramètres pour filtrer une sortie spécifique.
Exemple de code :
Get-Service | Where-Object -Property StartType -eq 'Automatic'
Notez ci-dessus qu’au lieu d’utiliser un bloc de script, la commande spécifie la propriété de l’objet en tant que valeur de paramètre pour le paramètre Property. De plus, l’opérateur -eq
est désormais un paramètre, permettant de lui passer la valeur Automatique
.
L’utilisation de paramètres de cette manière élimine désormais le besoin d’un bloc de script. Cependant, bien que Microsoft ait introduit les paramètres comme méthode de script plus propre, nous avons une excellente raison d’utiliser des blocs de script dont nous parlerons dans la section suivante de l’article.
Utilisation de plusieurs instructions conditionnelles
Vous pouvez combiner deux ou plusieurs conditions à l’aide d’un opérateur (comme -and
ou -or
) pour les évaluer à l’aide d’un bloc de script. Cependant, nous devons utiliser un composant Windows PowerShell particulier appelé sous-expressions pour évaluer chaque condition avec succès.
Dans Windows PowerShell, nous pouvons utiliser des sous-expressions pour exécuter une expression dans une syntaxe de filtrage comme Where-Object
. Pour ce faire, nous entourons l’instruction conditionnelle que nous exécutons de parenthèses (()
).
Exemple de code :
Get-Process | Where-Object {($_.CPU -gt 2.0) -and ($_.CPU -lt 10)}
Exemple de bloc de script :
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
334 21 18972 26384 5.23 3808 0 AnyDesk
635 34 13304 51264 9.56 4140 5 notepad
726 36 12820 51196 4.69 12088 5 notepad
802 46 18356 65088 7.98 10784 5 OneDrive
340 18 6472 26436 3.44 1252 5 RuntimeBroker
698 34 14672 44484 3.63 3284 5 RuntimeBroker
323 19 5732 23432 4.00 11200 5 RuntimeBroker
560 18 6440 27752 4.63 8644 5 sihost
632 31 21524 69972 2.81 6392 5 StartMenuExperienceHost
390 18 9756 30832 3.94 3084 5 svchost
523 24 8768 36312 2.17 6300 5 svchost
524 17 6416 21036 4.42 10932 5 SynTPEnh
525 22 15336 38904 3.41 2192 5 TextInputHost
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn