您可以使用 cmdlet 按名称获取属性Select-Object
,并指定您感兴趣的属性名称。请注意,这不仅仅是返回该属性的原始值;而是返回该属性的原始值。相反,你得到的东西仍然像一个对象。
[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
完全正确,其他人通过推荐cmdlet的-ExpandProperty
参数来回答这个问题。Select-Object
这通过返回指定属性的值绕过了一些令人头疼的问题,但是您将希望在不同的场景中使用不同的方法。
-ExpandProperty <String>
指定要选择的属性,并指示应尝试扩展该属性
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
PowerShell 变量