¿Cómo puedo obtener una propiedad de un objeto en powershell sin usar paréntesis?

13

A menudo encuentro que tengo que rodear un comando entre paréntesis y luego usar el operador de acceso a la propiedad (punto-sintaxis) para obtener el valor de una propiedad. Esto es bastante molesto ya que tengo que volver al comienzo de la línea cuando prefiero seguir escribiendo donde estoy. Es especialmente molesto cuando estoy en medio de un conjunto más grande de comandos canalizados.

Ejemplo

Si tengo el siguiente comando

Get-PSProvider FileSystem

y quiero obtener la Drivespropiedad, primero tendría que rodear todo el comando entre paréntesis:

(Get-PSProvider FileSystem).Drives

¿Existe una forma más rápida de obtener el valor de una sola propiedad?

brianpeiris
fuente

Respuestas:

14

Puedes usar Select-Object -ExpandProperty <property name>. Esto se puede acortar usando el alias selecty solo escribiendo parte del nombre de la propiedad:

Get-PSProvider FileSystem| select -exp Drives

Un beneficio adicional de este método es que puede acceder a una sola propiedad para varios objetos.

Esto no devolverá nada ( Actualización: esto funciona en PowerShell v3.):

(Get-PSProvider).Drives

Sin embargo, esto devolverá las unidades para todos los proveedores:

Get-PSProvider| select -exp Drives
Rynant
fuente
Muy interesante. Gracias por la corrección.
soandos