我在访问Powershell中可预测结构但未知深度的json对象时遇到问题。因此json-objects包含可以通过“and”和“or”连接的信息,但这些连接可以在多个级别中使用。作为一个例子:
$ab=@"
{
"cond": "one",
"and": [
{"cond": "two"},
{"cond": "three"},
{"or": [{"cond": "four"},
{"cond": "five"}
]
}
]
}
"@ | ConvertFrom-Json
我需要能够阅读/测试类似
的内容$test="and.or"
$ab.$test.cond
其中$ test是几个“和”和“或”的组合,如和.or.or.and 。 问题是我无法弄清楚我的$ ab。$ test.cond的想法是如何用Powershell编写的。从理论上讲,我可以手动测试给定深度的所有可能组合,但我不愿意。无论如何都知道这是如何工作的?非常感谢!
(Powershell第5版)
答案 0 :(得分:2)
我认为您应该为条件引擎/描述符定义一组适当的类,使用PowerShell类或使用C#创建程序集,以便您可以在PowerShell中使用这些类型。
但是对于快速而肮脏的PowerShell解决方案,您可以这样做:
"`$ab.$test.cond" | Invoke-Expression
# or
'$ab.{0}.cond' -f $test | Invoke-Expression
当然没有错误检查。任何其他解决方案可能会成为一个单独的递归函数,如果你想得到真正的检查等,但它会更脆弱,然后使用明确定义的对象集。