Vous pouvez obtenir un propriété par nom en utilisant le Select-Object
et en spécifiant le(s) nom(s) de la propriété qui vous intéresse(nt). Notez que cela ne renvoie pas simplement la valeur brute de cette propriété ; vous obtenez quelque chose qui se comporte toujours comme un objet.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
Afin d'utiliser le valeur pour ce bien, vous devrez toujours identifier le bien que vous recherchez, même s'il n'y a qu'un seul bien :
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
Comme dans d'autres réponses, si vous voulez utiliser une seule propriété dans une chaîne de caractères, vous devez évaluer l'expression (en la mettant entre parenthèses) et la préfixer avec le signe dollar ($) pour déclarer l'expression dynamiquement comme une variable à insérer dans la chaîne de caractères :
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
A juste titre, d'autres ont répondu à cette question en recommandant le -ExpandProperty
pour le paramètre Select-Object
cmdlet. Cela permet de contourner une partie du casse-tête en renvoyant la valeur de la propriété spécifiée, mais vous voudrez utiliser différentes approches dans différents scénarios.
-ExpandProperty <String>
Spécifie une propriété à sélectionner et indique qu'il faut tenter de de développer cette propriété
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
powershell variables