我们的监控系统有一个REST API,我试图从中检索属性,然后将它们输出到自定义对象。一些属性值是哈希表。
除了保留自定义对象以供在Powershell中使用之外,我想将它们导出为CSV,所以我需要那些哈希表是其他东西,所以我最终不会在那些中使用Syste.Object []列。
从API返回的对象看起来像这样(截断):
$allServices[0]
alertStatus : none
ignoreSSL : True
description : Test service
stopMonitoring : False
stopMonitoringByFolder : False
useDefaultLocationSetting : False
serviceProperties : {}
transition : 1
alertStatusPriority : 100000
serviceFolderId : 1
script :
disableAlerting : False
individualAlertLevel : warn
checkpoints : {@{id=1; geoInfo=Overall; smgId=0}, @{id=2; geoInfo=US - Los Angeles; smgId=1}, @{id=3; geoInfo=US - Washington DC; smgId=2}, @{id=4; geoInfo=US - San Francisco; smgId=3}...}
pageLoadAlertTimeInMS : 30000
sdtStatus : none-none-none
serviceStatus : alive
method : tabledriven
id : 1
然后检查点看起来像这样:
$allServices[0].checkpoints
id geoInfo smgId
-- ------- -----
1 Overall 0
2 US - Los Angeles 1
3 US - Washington DC 2
4 US - San Francisco 3
5 Europe - Dublin 4
6 Asia - Singapore 5
处理检查点属性的最佳方法是什么?
感谢。
答案 0 :(得分:1)
将checkpoints
(可能还有serviceProperties
)转换为JSON字符串。
$allServicesCSV = foreach ($srv in $allServices) {
$srv = $srv.PSObject.Copy() # shallow copy
$srv.checkpoints = ConvertTo-Json $srv.checkpoints -Compress
$srv
}
答案 1 :(得分:0)
嗯,需求发生了变化,所以我只需要输出到json / XML而不是CSV,这样就更容易了。感谢。