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.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
Para utilizar o valor para essa propriedade, você ainda precisará identificar qual a propriedade que você está depois, mesmo se houver apenas uma propriedade:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
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:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
Muito corretamente, outras pessoas responderam a essa pergunta recomendando o -ExpandProperty
parâmetro para o Select-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.
-ExpandProperty <String>
Especifica uma propriedade para selecionar e indica que deve ser feita uma tentativa de expandir essa propriedade
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
PowerShell variáveis
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.