Filtrer et isoler les objets PowerShell

Marion Paul Kenneth Mendoza 30 janvier 2023
  1. Présentation des objets PowerShell
  2. Filtrage de la sortie à l’aide de PowerShell
Filtrer et isoler les objets PowerShell

Dans Windows PowerShell, la plupart de ses résultats lors de l’exécution de requêtes Get sont généralement créés et affichés au format d’objet PowerShell (PSObject). PSObjects est l’une des fonctions critiques de PowerShell qui le distingue des autres langages de script.

Cependant, nous ne pouvions pas rechercher rapidement un PSObject à cause de ses attributs, et nous devons donc isoler les attributs avant d’établir un index de recherche. Dans cet article, nous parlerons des objets Windows PowerShell, comment analyser le résultat de l’objet PS pour que les résultats puissent être recherchés et effectuer un filtrage approprié à l’aide de PowerShell.

Présentation des objets PowerShell

Comme mentionné, les objets PowerShell sont l’un des points forts du langage de script. Chaque objet PowerShell possède des attributs qui définissent l’objet dans son ensemble.

Prenons Get-Service comme exemple.

Exemple de code :

Get-Service

Production:

Status   Name               DisplayName
------   ----               -----------
Running  AarSvc_147d22      Agent Activation Runtime_147d22
Running  AdobeARMservice    Adobe Acrobat Update Service
Running  AESMService        Intel® SGX AESM

Dans les objets PowerShell Get-Service, nous avons Status, Name et DisplayName comme attributs. Pour filtrer les objets, il faut isoler l’objet entre ses attributs à l’aide de la commande Where-Object.

Par exemple, nous ne pouvons obtenir que le type Status ou le type Name, mais nous ne pouvons pas simplement rechercher un mot-clé spécifique sans appeler d’abord l’attribut.

Exemple de code :

Get-Service | Where-Object {$_.Status -match "Stopped" }

Production:

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity

Dans la section suivante de l’article, nous expliquerons comment afficher ces sorties sous forme de chaîne au lieu d’un format d’objet PS et effectuer un filtrage avec différentes requêtes de recherche.

Filtrage de la sortie à l’aide de PowerShell

Pour filtrer rapidement la sortie, nous devons afficher la sortie au format chaîne. Nous devons diriger la commande vers la commande Out-String.

Pour l’exemple ci-dessous, nous allons l’affecter à une variable pour faciliter notre prochain extrait de code.

Exemple de code :

$serviceOutput = (Get-Service | Out-String) -split "`r`n"

Le code ci-dessus ne donnera pas de résultat car la valeur est stockée dans la variable. De plus, nous avons effectué une petite opération de chaîne pour diviser les résultats ligne par ligne.

Si nous filtrons, plus tard, le script l’affichera ligne par ligne au lieu d’une seule chaîne entière.

La valeur stockée dans la variable $serviceOutput est au format chaîne. Pour rechercher le mot-clé, nous devons diriger la commande Select-String avec le mot-clé que nous souhaitons rechercher.

Exemple de code :

$serviceOutput | Select-String Intel

Production:

Running  AESMService        Intel® SGX AESM
Stopped  Intel(R) Capabi... Intel(R) Capability Licensing Servi...
Stopped  Intel(R) TPM Pr... Intel(R) TPM Provisioning Service
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 Object