No PowerShell, como você obtém o valor da propriedade de um objeto especificando seu nome (uma string)? Eu quero algo como o seguinte:
$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"
Existe algo semelhante a "Get-PropertyByName" no PowerShell?
powershell
KFL
fonte
fonte
select -expand "SomeProp"
se você deseja o valor.select "SomeProp"
retorna um customobject com uma propriedade "SomeProp", e então ele é muito bonito de volta ao passo 1.$obj."SomeProp"
emwrite-host
?$obj.($propName)
também funciona. (Os parênteses não são necessários, mas parece realmente estranho para mim sem eles.)$propName
armazenado em um objeto, por exemplo$Headers.PropertyName
, os parênteses serão necessários$obj.($Headers.PropertyName)
.Expandindo @aquinas:
ou
ou
Fiz essas sugestões para aqueles que podem estar apenas procurando um comando de linha única para obter algumas informações e desejam incluir um exemplo do mundo real.
No gerenciamento do Office 365 via PowerShell, aqui estava um exemplo que eu obtive para obter todos os usuários / grupos que foram adicionados à lista "BookInPolicy":
O simples uso de "Select BookInPolicy" estava cortando vários membros, então obrigado por esta informação!
fonte
Você pode obter uma propriedade pelo nome usando o
Select-Object
cmdlet e especificando o (s) nome (s) da propriedade em que está interessado. Observe que isso simplesmente não retorna o valor bruto dessa propriedade; em vez disso, você obtém algo que ainda se comporta como um objeto.Para utilizar o valor para essa propriedade, você ainda precisará identificar qual a propriedade que você está depois, mesmo se houver apenas uma propriedade:
Conforme outras respostas aqui, se você deseja usar uma única propriedade em uma sequência, é necessário avaliar a expressão (colocar colchetes em volta dela) e prefixar um cifrão ($) para declarar a expressão dinamicamente como uma variável a ser inserida na string:
Muito corretamente, outras pessoas responderam a essa pergunta recomendando o
-ExpandProperty
parâmetro para oSelect-Object
cmdlet. Isso evita parte da dor de cabeça retornando o valor da propriedade especificada, mas você deseja usar abordagens diferentes em diferentes cenários.PowerShell variáveis
fonte
Tente o seguinte:
fonte
The value of Prop is Value
e depoisThe value of NonexistentProp is
Aqui está uma maneira alternativa de obter o valor da propriedade de um objeto:
fonte
fonte