我的aws cli返回带有嵌套哈希的多行数组,我无法解析输出以从中获取适当的值
>Write-Host $a
[
[
[
{
"VolumeID": "vol-fxxxxxx"
}
]
]
]
如果我做$ a [0],它会返回第一行,即" ["与增量索引相同。 我如何解析这个数组并从中获取volumeID? 谢谢
其他详情:
感谢您的宝贵答案。以下是上述对象的类名:
> $a.getType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
> $a | Where-Object ($_ -like "*Volume*")
> $a | ConvertFrom-Json
ConvertFrom-Json : Invalid JSON primitive:
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData.
At line:1 char:6
+ $a | ConvertFrom-Json
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
嗨Martin Brandl,TessellatingHeckler我已经更新了你的问题,请你帮我解决一下。 谢谢
答案 0 :(得分:2)
与增量索引相同
我无法理解执行相同的增量索引,并返回第一行,但它看起来像是:
多行字符串($a.gettype()
有Name: String
):
$b = $a | ConvertFrom-Json
$b[0][0][0].VolumeID
或者,一个字符串数组($a.gettype() Name is Object[] or String[]
),首先执行此操作,然后从JSON转换:
$a = -join $a
答案 1 :(得分:0)
您可以使用where-object cmdlet。
$a | where-object {$_ -like "*Volume*"}
有关where-object cmdlet的更多信息,请访问:https://technet.microsoft.com/en-us/library/ee177028.aspx
谢谢,蒂姆。