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

标签 reflection powershell

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

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

$myObject | get-member -membertype property

这将以非常清晰易读的方式返回所有属性的列表。但我需要的是为这些属性找到一个值。

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

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

最佳答案

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

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

例子 -

$myobject | Select-Object -Property name, length
$myobject | Select-Object -Property *

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

例子 -
$myobject | Format-List -Property *
$myobject | Format-Table -Property name, length

最后,要做一个“eval”风格的输出,你可以简单地输入
$myobject."$propertyname" 

并且将返回该属性的值。

关于reflection - Powershell 是否具有 "eval"等效项?有没有更好的方法来查看属性和值的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464599/

相关文章:

.net - MS Word 2010 - 如何以编程方式清除 "Document Recovery"

regex - 使用 -match 从字符串中提取美元符号和金额

powershell - 在 PowerShell 脚本中注入(inject)自定义步骤

PowerShell 将源文件夹中的文件复制到匹配目标失败并显示目标值

Java将csv文件转为java对象(泛型相关)

c# - ParameterInfo.IsLcid 或 ParameterInfo.IsRetval 何时为真?

Java 8 : create new instance of class with generics using reflection

java - 跨线程反射

Java 向下转型与反射

Powershell 注销远程 session