【发布时间】:2020-05-18 01:32:46
【问题描述】:
所以我从我的 Azure 订阅中收集到了这些从 json 转换而来的信息:
$Request += (((az consumption usage list --subscription $subscriptionID --start-date $CycleStart --end-date $CycleEnd) 2> $null | ConvertFrom-Json) | select subscriptionname, instanceName, usageStart, usageEnd, pretaxCost, tags )
这会产生一个看起来不错的数组:
$Request
subscriptionName : Sub1
instanceName : VM1
usageStart : 2020-01-27T00:00:00Z
usageEnd : 2020-01-27T23:59:59Z
pretaxCost : 3.194
tags : @{Classification=ABC, Zone=123, Field=qaz, Org=CAL, Owner=Bob@dev}
subscriptionName : Sub1
instanceName : VM2
usageStart : 2020-01-27T00:00:00Z
usageEnd : 2020-01-27T23:59:59Z
pretaxCost : 2.1
tags : @{Classification=zzz, Zone=123, Field=qaz, Org=NZ, Owner=John@prod}
但正如您所见,“标签”字段看起来在 @{xxxx} 之间合并。经过数小时的反复试验(!),我想要实现并且无法实现的目标是这样的:
subscriptionName : Sub1
instanceName : VM1
usageStart : 2020-01-27T00:00:00Z
usageEnd : 2020-01-27T23:59:59Z
pretaxCost : 3.194
Classification : ABC
Zone : 123
Field : qaz
Org : CAL
Owner : Bob@dev
subscriptionName : Sub1
instanceName : VM2
usageStart : 2020-01-27T00:00:00Z
usageEnd : 2020-01-27T23:59:59Z
pretaxCost : 2.1
Classification : ABC
Zone : 222
Field : BIZ
Org : NZ
Owner : John@dev
但是...嵌套在“标签”下的字段可能会随着时间而改变,因此我无法硬编码会查找“分类”、“区域”、“字段”等的内容...)
谁能帮我解决这个问题? :)
我偶然发现了那个脚本,认为它可以提供帮助,但无法让它发挥作用.. https://github.com/solidstate888/JSON-ToCSV
【问题讨论】:
-
ConvertFrom-Json 有一个-Depth parameter
-
是的,但默认情况下深度为 1024,因此应该可以工作.. 但我认为 ConvertFrom-Json 无法正确解析字段“标签”,因为这看起来不像格式正确的 json ...
-
@frank 查看我的工作代码答案
标签: arrays json azure powershell nested