Dans PowerShell, comment obtenir la valeur de propriété d'un objet en spécifiant son nom (une chaîne)? Je veux quelque chose comme ce qui suit:
$obj = get-something
# View the object's members:
$obj | gm
# I could retrieve a property by doing so:
write-host $obj.SomeProp
# But for many purposes, I would really want to:
write-host $obj | Get-PropertyByName "SomeProp"
Existe-t-il quelque chose de similaire à «Get-PropertyByName» dans PowerShell?
powershell
KFL
la source
la source
select -expand "SomeProp"
si vous voulez la valeur.select "SomeProp"
renvoie un objet personnalisé avec une propriété "SomeProp", puis il est à peu près de retour à l'étape 1.$obj."SomeProp"
danswrite-host
?$obj.($propName)
fonctionne également. (Les parenthèses ne sont pas obligatoires, mais cela me semble vraiment étrange sans elles.)$propName
stocké dans un objet par exemple,$Headers.PropertyName
les parenthèses sont obligatoires$obj.($Headers.PropertyName)
.Expansion sur @aquinas:
ou
ou
J'ai fait ces suggestions pour ceux qui pourraient simplement rechercher une commande sur une seule ligne pour obtenir des informations et je voulais inclure un exemple réel.
Dans la gestion d'Office 365 via PowerShell, voici un exemple que j'ai utilisé pour obtenir tous les utilisateurs / groupes qui avaient été ajoutés à la liste «BookInPolicy»:
Le simple fait d'utiliser "Select BookInPolicy" coupait plusieurs membres, alors merci pour cette information!
la source
Vous pouvez obtenir une propriété par nom à l'aide de l'
Select-Object
applet de commande et en spécifiant le ou les noms de propriété qui vous intéressent. Notez que cela ne renvoie pas simplement la valeur brute de cette propriété; au lieu de cela, vous obtenez quelque chose qui se comporte toujours comme un objet.Pour utiliser la valeur de cette propriété, vous devrez toujours identifier la propriété que vous recherchez, même s'il n'y a qu'une seule propriété:
Comme pour les autres réponses ici, si vous souhaitez utiliser une seule propriété dans une chaîne, vous devez évaluer l'expression (mettre des crochets autour d'elle) et le préfixe avec un signe dollar ($) pour déclarer l'expression dynamiquement en tant que variable à insérer dans la chaîne:
Tout à fait correctement, d'autres ont répondu à cette question en recommandant le
-ExpandProperty
paramètre de l'Select-Object
applet de commande. Cela évite une partie du mal de tête en renvoyant la valeur de la propriété spécifiée, mais vous souhaiterez utiliser différentes approches dans différents scénarios.PowerShell variables
la source
Essaye ça :
la source
The value of Prop is Value
puisThe value of NonexistentProp is
Voici une autre façon d'obtenir la valeur de propriété d'un objet:
la source
la source