在PowerShell中访问对象属性的值

时间:2013-07-29 15:04:45

标签: object powershell

我正在浏览一系列对象,我可以很好地显示这些对象。

$obj

显示我的foreach循环中的每个对象。 我正在尝试访问对象字段及其值。 此代码也可以正常工作:

$obj.psobject.properties

要查看每个对象字段的名称,我这样做:

$obj.psobject.properties | % {$_.name}

也可以。

当我尝试通过这样做来访问这些字段的值时:

$obj.psobject.properties | % {$obj.$_.name}

不返回或显示任何内容。

这样做是为了诊断目的,以查看我是否可以访问字段的值。 主要困境是我无法访问特定字段的值。即

$obj."some field"
即使我已确认“某个字段”具有值,

也不会返回值。

这令我感到困惑。有谁知道我做错了什么?

3 个答案:

答案 0 :(得分:22)

迭代foreach中的属性后,它们将通过$_(当前对象符号)变为可用。就像您使用$_.Name打印属性的名称一样,使用$_.Value将打印其值:

$obj.psobject.properties | % {$_.Value}

答案 1 :(得分:5)

运算符优先级按以下方式解释:

($obj.$_).Name

因为你想要

而没有任何结果
$obj.($_.Name)

首先评估一个属性的名称,然后在$obj上访问它。

答案 2 :(得分:1)

如果您只需要其中一个属性的值,则不必遍历所有属性:

$obj.psobject.properties["bla"].value