En PowerShell, ¿cómo obtiene el valor de propiedad de un objeto especificando su nombre (una cadena)? Quiero algo como lo siguiente:
$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"
¿Hay algo similar a "Get-PropertyByName" en PowerShell?
powershell
KFL
fuente
fuente
select -expand "SomeProp"
si quieres el valor.select "SomeProp"
devuelve un objeto personalizado con una propiedad "SomeProp", y luego regresa al paso 1.$obj."SomeProp"
enwrite-host
?$obj.($propName)
también funciona. (Los paréntesis no son obligatorios, pero me parece realmente extraño sin ellos.)$propName
almacenado en un objeto, por ejemplo$Headers.PropertyName
, los paréntesis son obligatorios$obj.($Headers.PropertyName)
.Expandiendo sobre @aquinas:
o
o
Hice estas sugerencias para aquellos que podrían estar buscando un comando de una sola línea para obtener alguna información y quería incluir un ejemplo del mundo real.
Al administrar Office 365 a través de PowerShell, he aquí un ejemplo que utilicé para obtener todos los usuarios / grupos que se agregaron a la lista "BookInPolicy":
El simple uso de "Select BookInPolicy" estaba cortando a varios miembros, ¡así que gracias por esta información!
fuente
Puede obtener una propiedad por nombre usando el
Select-Object
cmdlet y especificando los nombres de propiedad que le interesan. Tenga en cuenta que esto no solo devuelve el valor bruto de esa propiedad; en cambio, obtienes algo que todavía se comporta como un objeto.Para utilizar el valor de esa propiedad, aún deberá identificar qué propiedad busca, incluso si solo hay una propiedad:
Según otras respuestas aquí, si desea usar una sola propiedad dentro de una cadena, debe evaluar la expresión (poner corchetes alrededor de ella) y el prefijo con un signo de dólar ($) para declarar la expresión dinámicamente como una variable para insertar en la cuerda:
Muy correctamente, otros han respondido esta pregunta recomendando el
-ExpandProperty
parámetro para elSelect-Object
cmdlet. Esto evita algunos de los dolores de cabeza al devolver el valor de la propiedad especificada, pero querrá usar diferentes enfoques en diferentes escenarios.potencia Shell variables
fuente
Prueba esto :
fuente
The value of Prop is Value
y luegoThe value of NonexistentProp is
Aquí hay una forma alternativa de obtener el valor de propiedad de un objeto:
fuente
fuente