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.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
Para utilizar el valor de esa propiedad, aún deberá identificar qué propiedad busca, incluso si solo hay una propiedad:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
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:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
Muy correctamente, otros han respondido esta pregunta recomendando el -ExpandPropertyparámetro para el Select-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.
-ExpandProperty <String>
Especifica una propiedad para seleccionar e indica que se debe intentar expandir esa propiedad
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
potencia Shell variables
select -expand "SomeProp"si quieres el valor.select "SomeProp"devuelve un objeto personalizado con una propiedad "SomeProp", y luego regresa al paso 1.