Como posso obter uma propriedade de um objeto no PowerShell sem usar parênteses?

13

Costumo achar que tenho que colocar um comando entre parênteses e depois usar o operador de acesso à propriedade (sintaxe de pontos) para obter o valor de uma propriedade. Isso é muito chato, pois tenho que voltar ao início da linha quando prefiro continuar digitando onde estou. É especialmente irritante quando estou no meio de um conjunto maior de comandos canalizados.

Exemplo

Se eu tiver o seguinte comando

Get-PSProvider FileSystem

e eu quero obter a Drivespropriedade, eu teria que colocar o comando inteiro entre parênteses primeiro:

(Get-PSProvider FileSystem).Drives

Existe uma maneira mais rápida de obter o valor de uma única propriedade?

brianpeiris
fonte

Respostas:

14

Você pode usar Select-Object -ExpandProperty <property name>. Isso pode ser reduzido usando o alias selecte digitando apenas parte do nome da propriedade:

Get-PSProvider FileSystem| select -exp Drives

Um benefício adicional para esse método é que você pode acessar uma única propriedade para vários objetos.

Isso não retornará nada ( atualização: isso funciona no PowerShell v3.):

(Get-PSProvider).Drives

No entanto, isso retornará as unidades para todos os provedores:

Get-PSProvider| select -exp Drives
Rynant
fonte
Muito interessante. Obrigado pela correção.
soandos