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.)$propNamealmacenado 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-Objectcmdlet 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
-ExpandPropertyparámetro para elSelect-Objectcmdlet. 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 Valuey luegoThe value of NonexistentProp isAquí hay una forma alternativa de obtener el valor de propiedad de un objeto:
fuente
fuente