Articles

PowerShell: obtenir les propriétés des objets dans les tableaux

Posted by admin

dans PowerShell, j’exécute souvent des commandes qui renvoient des tableaux que je dois filtrer. Une fois que j’ai filtré l’objet que je recherche, je dois lire une propriété de cet objet. Il ya quelques façons de le faire. Voici trois.

Ce sont également de bons exemples si vous êtes nouveau sur PowerShell et essayez de passer de L’état D’esprit Linux d’analyse des chaînes à L’état D’esprit PowerShell de manipulation des objets.,

Pour ces exemples, nous allons utiliser un tableau filtré à partir de Get-Process:

Select-Object lit les propriétés des objets. Nous pouvons canaliser l’objet que nous avons trouvé:

Get-Process | Where-Object ProcessName -Match "update" | Select-Object cpu CPU ---380.761615

dans ce cas, Where-Object renvoie un objet et Select-Object lit la propriété hors de celui-ci, mais cela fonctionne toujours si nous associons plusieurs processus. Ensuite, Where-Object renvoie un tableau qui est décompressé par le pipeline de PowerShell et envoyé à Select-Object un à la fois.,

il s’agit essentiellement d’un filtre de propriété. Il renvoie toujours un tableau d’objets de processus, mais ces objets n’ont que la propriété que vous avez sélectionnée. Nous pouvons le voir avec Get-Member:

quatre méthodes, mais une seule propriété.

Méthode 2: sous-expression

Si nous capturons la sortie de notre commande match dans une sous-expression, Nous pouvons accéder aux propriétés de l’objet en utilisant la notation pointillée comme nous le ferions avec n’importe quelle variable:

$(Get-Process | Where-Object ProcessName -Match "update").cpu380.761615

cela fonctionne également si notre correspondance, La sous-expression contiendra un tableau et PowerShell obtiendra automatiquement la propriété cpu de chaque objet de ce tableau.

contrairement au filtre deSelect-Object, cela ne renvoie pas d’objets de processus avec une propriété cpu. Au lieu de cela, il renvoie un double (nombre) avec la valeur réelle:

Méthode 3: Boucle

Comme toute sortie, nous pouvons canaliser notre correspondance dans une boucle ForEach-Object et utiliser la variable $_ pour accéder aux propriétés de chaque élément que la boucle voit:

Get-Process | Where-Object ProcessName -Match "update" | ForEach-Object {$_.cpu}381.625785

la boucle fonctionnera bien sûr sur plusieurs objets.,

tout comme la sous-expression, cela renvoie la valeur réelle au lieu d’un objet avec une propriété.

bonne automatisation!

Adam

Besoin de plus de cet article? Je suis disponible pour consulter.

Vous pouvez également consulter ces articles connexes:

  • Comment utiliser Out-String dans PowerShell: ne pas
  • Script DSC PowerShell Sans Tête
  • module D’installation PowerShell: utilisez Install-Package à la place

Leave A Comment