17

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

$obj

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

$obj.psobject.properties

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

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

这也可以正常工作。

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

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

没有返回或显示。

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

$obj."some field"

即使我已确认“某些字段”具有值,也不会返回值。

这让我很困惑。有谁知道我做错了什么?

4

3 回答 3

24

一旦您遍历了 foreach 中的属性,它们就可以通过$_(当前对象符号)使用。就像您使用 打印属性的名称一样$_.Name, using$_.Value将打印它们的值:

$obj.psobject.properties | % {$_.Value}
于 2013-07-29T15:10:23.270 回答
8

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

($obj.$_).Name

这导致什么都没有,因为你想要

$obj.($_.Name)

这将首先评估属性的名称,然后在$obj.

于 2013-07-29T15:22:18.217 回答
8

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

$obj.psobject.properties["foo"].value
于 2017-09-04T19:26:11.447 回答