【发布时间】:2021-06-07 23:18:12
【问题描述】:
我收到了来自具有未知嵌套级别属性的 API 的响应,这是一个示例:
affects_rating : True
assets : {@{asset=xxxxxxxxxxxxx; identifier=; category=low; importance=0.0; is_ip=True}}
details : @{check_pass=; diligence_annotations=; geo_ip_location=NL; grade=GOOD; remediations=System.Object[]; vulnerabilities=System.Object[]; dest_port=443; rollup_end_date=2021-06-06;
rollup_start_date=2020-03-18}
evidence_key : xxxxxxxxx:xxxx
first_seen : 2020-03-18
last_seen : 2021-06-06
related_findings : {}
risk_category : Diligence
risk_vector : open_ports
risk_vector_label : Open Ports
rolledup_observation_id : xxxx-xxxx==
severity : 1.0
severity_category : minor
tags : {}
asset_overrides : {}
duration :
comments :
remaining_decay : 59
temporary_id : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
affects_rating : True
assets : {@{asset=xxxx.xxxx.com; identifier=; category=low; importance=0.0002340946; is_ip=False}, @{asset=xxxx.xxxx.com; identifier=; category=critical; importance=0.45131093; is_ip=False},
到目前为止,我尝试使用表访问每个值,但有时记录包含一个对象,该对象将System.Object[] 输出到 CSV 文件。
foreach ($item in $findings.results) {
$tabledata = [ordered]@{
temporary_id = $item.temporary_id
affects_rating = $item.affects_rating
asset = $item.assets.asset
asset_identifier = $item.assets.identifier
asset_category = $item.assets.category
asset_importance = $item.assets.importance
asset_is_ip = $item.assets.is_ip
modal_data = $item.details.diligence_annotations.modal_data
modal_tags = $item.details.diligence_annotations.modal_tags
server = $item.details.diligence_annotations.server
}
}
变量$findings的类型是PSCustomObject
PS C:\Users\bryanar> $findings.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
有什么建议吗?
【问题讨论】:
-
那么当您的属性中有嵌套数组时,您的预期结果是什么?
-
数组可以是多维的,其中 Excel / Csv 只有二维。您需要考虑 Excel / Csv 可能不是导出请求的最佳格式。这就是 JSON 存在的原因。
-
这能回答你的问题吗? Powershell ConvertFrom-JSON to csv file(s)
标签: excel powershell nested pscustomobject