Powershell是否具有"eval"等价物?有没有更好的方法来查看属性和值列表?

gle*_*ron 6 reflection powershell

我正在做一些Powershell脚本(第一次)来查看Sharepoint站点中的一些东西,我希望能够做的是查看对象的属性列表并输出它们的值以"property-name = value"的格式.

现在我可以使用这个找到元素列表:

$myObject | get-member -membertype property
Run Code Online (Sandbox Code Playgroud)

这将以非常清晰和可读的方式返回所有属性的列表.但我需要的是找到这些属性的值.

在一些脚本语言中,我可以有一种eval("$ myObject.$ propertyName")调用 - 我从get-member输出中提取$ propertyName - 并让它将字符串作为代码进行评估,这对于那种快速我需要的解决方案很好.

这是否存在于Powershell中,或者是否有更方便的方法?我应该使用反射吗?

Ste*_*ski 8

要获取对象属性的值,可以使用多种方法.

首先,您可以使用Select-Object并使用-Property参数指定要返回的属性值.显示的方式取决于您指定的属性数量和对象的类型.如果您想要所有属性,可以使用通配符(*)来获取所有属性.

示例 -

$myobject | Select-Object -Property name, length
$myobject | Select-Object -Property *
Run Code Online (Sandbox Code Playgroud)

您还可以使用Format-List或Format-Table以类似的方式控制输出的格式.

示例 -

$myobject | Format-List -Property *
$myobject | Format-Table -Property name, length
Run Code Online (Sandbox Code Playgroud)

最后,要进行"eval"样式输出,您只需输入即可

$myobject."$propertyname" 
Run Code Online (Sandbox Code Playgroud)

并返回该属性的值.

  • 我想你甚至可以在最后一段代码片段中丢失引号:$ myobject.$ propertyname它看起来很奇怪,但有效. (3认同)