Utilisation de la commande Where-Object dans PowerShell

Marion Paul Kenneth Mendoza 30 janvier 2023
  1. la cmdlet Where-Object dans PowerShell
  2. Création de conditions de filtre avec des blocs de script dans PowerShell
  3. Création de conditions de filtre avec des paramètres dans PowerShell
  4. Utilisation de plusieurs instructions conditionnelles
Utilisation de la commande Where-Object dans PowerShell

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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Article connexe - PowerShell Statement