为什么这不起作用
当您在字符串中提供所需的属性时,就像这样
[string]$NestedJsonPath = "NestedJson.Version"
Powershell寻找一个名为的属性
NestedJSon.Version。它实际上并没有遍历属性,而是在寻找包含句点的字符串文字。实际上,如果我这样向您的JSON添加这样的属性。
[object]$QuickJson = @'{ "Name" : "I am a JSON", "Version" : "1.2.3.4", "SomeBool" : true, "NULLValue" : null, "ArrayOfVersions" : [1.0,2.0,3.0], "MyInteger" : 69, "NestedJSON.Version" : 69, "NestedJSON" : { "Version" : 5.0, "IsReady" : false }}我现在得到了价值,就像这样:
>$MyPSJson.$NestedJsonPath69
取回值的最佳方法是使用两个单独的变量,如下所示。
$NestedJson = "NestedJson"$property = "Version">$MyPSJson.$NestedJson.$property5.0
或者,您也可以使用select语句,如下面的原始答案所示。
$MyPSJson | select $_.NestedJSON | select VersionVersion-------1.2.3.4
如果您使用多个Select-Object语句,它们将丢弃其他属性,并允许您更轻松地向下钻取您想要的值。



