Ceci fait partie d’une série de blog en cours écrite par Adam Gordon. Chaque semaine, Adam vous guidera à travers une commande PowerShell, en vous montrant quand et comment utiliser chacune d’entre elles. Cette semaine, Adam couvre la commande Where-Object.
Quand utiliser Where-Object
La cmdlet Where-Object sélectionne les objets qui ont des valeurs de propriétés particulières dans la collection d’objets qui lui sont passés.
À partir de Windows PowerShell 3.0, il existe deux façons différentes de construire une commande Where-Object.
- Bloc de script. Vous pouvez utiliser un bloc de script pour spécifier le nom de la propriété, un opérateur de comparaison et la valeur de la propriété. Where-Object renvoie tous les objets pour lesquels la déclaration du bloc de script est vraie.
- Déclaration de comparaison. Vous pouvez également écrire une déclaration de comparaison, qui ressemble beaucoup plus au langage naturel.
Comment utiliser Where-Object
Get stopped services :
(1st) Get-Service | Where-Object {$_.Status -eq « Stopped »}
(2nd) Get-Service | where Status -eq « Stopped »
Ces commandes obtiennent une liste de tous les services qui sont actuellement arrêtés.
La variable automatique $_ représente chaque objet qui est passé au cmdlet Where-Object.
La (1ère) commande utilise le format du bloc de script, la (2ème) commande utilise le format de l’instruction de comparaison.
Recueillir les processus en fonction de l’ensemble de travail:
Get-Process | Where-Object {$_.WorkingSet -GT 25000*1024}
Get-Process | Where-Object WorkingSet -GT (25000*1024)
Ces commandes listent les processus qui ont un ensemble de travail supérieur à 25 000 kilo-octets (Ko).
Parce que la valeur de la propriété WorkingSet est stockée en octets, la valeur de 25 000 est multipliée par 1 024.
La syntaxe du bloc de script et de l’instruction est équivalente et peut être utilisée de manière interchangeable.
Utilisez le format d’instruction de comparaison :
(1st) Get-Process | Where-Object -Property Handles -GE -Value 1000
(2nd) Get-Process | where Handles -GE 1000
Cet exemple montre comment utiliser le nouveau format d’instruction de comparaison du cmdlet Where-Object.
La (1st) commande utilise le format d’instruction de comparaison. Dans cette commande, aucun alias n’est utilisé et tous les paramètres incluent le nom du paramètre.
La (2e) commande est l’utilisation plus naturelle du format de commande de comparaison. L’alias where est substitué au nom du cmdlet Where-Object et tous les noms de paramètres facultatifs sont omis.
Utiliser plusieurs conditions :
Get-Module -ListAvailable | where {($_.Name -notlike « Microsoft* » -and $_.Name -notlike « PS* ») -and $_.HelpInfoUri}
La commande utilise le paramètre -ListAvailable du cmdlet Get-Module pour obtenir tous les modules sur l’ordinateur.
Un opérateur de pipeline (|) envoie les modules à la cmdlet Where-Object, qui obtient les modules dont les noms ne commencent pas par Microsoft ou PS, et ont une valeur pour la propriété HelpInfoURI, qui indique à PowerShell où trouver les fichiers d’aide mis à jour pour le module.
Les instructions de comparaison sont reliées par l’opérateur logique And.
L’exemple utilise le format de commande de bloc de script.
NOTE : les opérateurs logiques, tels que And et Or, ne sont valables que dans les blocs de script. Vous ne pouvez pas les utiliser dans le format d’instruction de comparaison d’une commande Where-Object.
Apprenez la commande de la semaine dernière : Get-WinEvent.
Vous avez besoin d’une formation PowerShell ? Consultez les cours de formation informatique en ligne PowerShell d’ITProTV.