在PowerShell中访问对象属性的值

Nim*_*iri 13 powershell object

我正在浏览一个对象数组,我可以很好地显示这些对象.

$obj
Run Code Online (Sandbox Code Playgroud)

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

$obj.psobject.properties
Run Code Online (Sandbox Code Playgroud)

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

$obj.psobject.properties | % {$_.name}
Run Code Online (Sandbox Code Playgroud)

这也很好.

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

$obj.psobject.properties | % {$obj.$_.name}
Run Code Online (Sandbox Code Playgroud)

没有返回或显示任何内容.

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

$obj."some field"
Run Code Online (Sandbox Code Playgroud)

即使我已确认"某个字段"具有值,也不会返回值.

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

Sha*_*evy 23

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

$obj.psobject.properties | % {$_.Value}
Run Code Online (Sandbox Code Playgroud)


tml*_*lye 7

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

$obj.psobject.properties["bla"].value
Run Code Online (Sandbox Code Playgroud)


Joe*_*oey 6

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

($obj.$_).Name
Run Code Online (Sandbox Code Playgroud)

因为你想要什么都没有

$obj.($_.Name)
Run Code Online (Sandbox Code Playgroud)

它将首先评估属性的名称,然后访问它$obj.