PowerShell导出REST API数据到CSV时修复System.Object[]不可读的方法
解决方案
CSV格式不支持直接存储数组类型的数据,因此需要将Targets数组拼接为单个字符串再导出,使用PowerShell的计算属性即可在保留所有关联字段的同时完成转换:
直接执行以下代码即可实现需求:
# 用分号作为分隔符合并Targets数组的所有元素,可根据需要更换分隔符 $scans.Data | Select-Object ScanID, Username, Name, ` @{Name = 'Targets'; Expression = { $_.Targets -join ';' }} | ` Export-Csv -Path "<替换为你的CSV文件路径>" -NoTypeInformation -Encoding UTF8
调整说明
- 上述代码中
@{Name='Targets';Expression={...}}是PowerShell的计算属性语法,会重写Targets字段的输出值,-join操作符会将数组的所有元素拼接为单个字符串,避免导出时显示System.Object[] - 如果需要在Excel中打开时
Targets字段内容按条目分行展示,可将分隔符替换为换行符:
导出后在Excel中设置单元格自动换行即可看到分行效果@{Name = 'Targets'; Expression = { $_.Targets -join "`n" }} - 如果
Targets数组存储的是嵌套对象而非纯字符串,可先提取对象属性再拼接,示例如下(假设每个Target对象包含ip和port属性):@{Name = 'Targets'; Expression = { $_.Targets | ForEach-Object {"$($_.ip):$($_.port)"} -join ';' }}
内容的提问来源于stack exchange,提问作者sailingbikeruk
相关产品推荐
相关产品推荐

