Disons que nous avons un tableau d'objets $ objets. Disons que ces objets ont une propriété "Nom".
C'est ce que je veux faire
$results = @()
$objects | %{ $results += $_.Name }
Cela fonctionne, mais peut-on le faire mieux?
Si je fais quelque chose comme:
$results = objects | select Name
$results
est un tableau d'objets ayant une propriété Name. Je veux que $ results contienne un tableau de noms.
Y a-t-il un meilleur moyen?
Je pense que vous pourrez peut-être utiliser le paramètre ExpandProperty
de Select-Object
.
Par exemple, pour obtenir la liste du répertoire en cours et simplement afficher la propriété Name, procédez comme suit:
ls | select -Property Name
Cela renvoie toujours des objets DirectoryInfo ou FileInfo. Vous pouvez toujours inspecter le type entrant dans le pipeline en effectuant une canalisation vers Get-Member (alias gm
).
ls | select -Property Name | gm
Ainsi, pour développer l'objet correspondant à celui du type de propriété que vous consultez, vous pouvez procéder comme suit:
ls | select -ExpandProperty Name
Dans votre cas, vous pouvez simplement procéder comme suit pour qu'une variable soit un tableau de chaînes, les chaînes constituant la propriété Name:
$objects = ls | select -ExpandProperty Name
Comme solution encore plus simple, vous pouvez simplement utiliser:
$results = $objects.Name
Ce qui devrait remplir $results
avec un tableau de toutes les valeurs de propriété 'Name' des éléments de $objects
.