我正在浏览一系列对象,我可以很好地显示这些对象。
$obj
显示我的foreach循环中的每个对象。 我正在尝试访问对象字段及其值。 此代码也可以正常工作:
$obj.psobject.properties
要查看每个对象字段的名称,我这样做:
$obj.psobject.properties | % {$_.name}
也可以。
当我尝试通过这样做来访问这些字段的值时:
$obj.psobject.properties | % {$obj.$_.name}
不返回或显示任何内容。
这样做是为了诊断目的,以查看我是否可以访问字段的值。 主要困境是我无法访问特定字段的值。即
$obj."some field"
即使我已确认“某个字段”具有值,也不会返回值。
这令我感到困惑。有谁知道我做错了什么?
答案 0 :(得分:22)
迭代foreach中的属性后,它们将通过$_
(当前对象符号)变为可用。就像您使用$_.Name
打印属性的名称一样,使用$_.Value
将打印其值:
$obj.psobject.properties | % {$_.Value}
答案 1 :(得分:5)
运算符优先级按以下方式解释:
($obj.$_).Name
因为你想要
而没有任何结果$obj.($_.Name)
首先评估一个属性的名称,然后在$obj
上访问它。
答案 2 :(得分:1)
如果您只需要其中一个属性的值,则不必遍历所有属性:
$obj.psobject.properties["bla"].value