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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn