可以按名称使用Select-Object
cmdlet,并指定属性名(S)你有兴趣得到财产请注意,这不是简单地返回。该财产的原始价值;相反,你得到的东西仍然像对象一样。
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
为了使用值为该属性,你还需要确定你是哪个属性后,即使只有一个属性:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
按其他的答案在这里,如果你想在一个字符串中使用一个单独的属性,你需要评估表达式(将括号括起来)并用美元符号($)前缀来动态地声明表达式作为要插入到字符串中的变量:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
相当正确的是,其他人通过推荐Select-Object
cmdlet的-ExpandProperty
参数来回答此问题。这通过返回指定属性的值绕过了一些头痛的问题,但是您会希望在不同的场景中使用不同的方法。
-ExpandProperty <String>
指定属性来选择,并指出应该尝试 进行拓展,物业
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
powershellvariables
记得展开:'select -expand“SomeProp”'如果你想要的值。 ''选择“SomeProp”'返回一个属性为“SomeProp”的customobject,然后他几乎回到第1步。 –
有没有在'write-host'中使用'$ obj。“SomeProp”'的方法? –
@TheMuffinMan,是的,它是一个普遍适用的功能,像写主机$ obj。“$ somepropertyname” –