You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写了进程数据转CSV/JSON/XML的代码,遇JSON截断问题,能否简化?

优化后的PowerShell代码及问题解决

核心改进点:

  • 仅调用一次Get-Process,避免重复查询系统进程,提升运行效率
  • 替换Format-Table为Select-Object,从根源解决JSON序列化深度超限的问题
  • 统一数据来源,代码结构更简洁、易维护

优化后代码:

# 一次性获取Chrome进程的目标属性,存入变量复用
$chromeProcesses = Get-Process -Name "chrome" | Select-Object Name, ID, StartTime, PagedMemorySize

# 导出为CSV格式
$chromeProcesses | ConvertTo-Csv | Set-Content -Path "c:\Out\demo12.csv"

# 导出为JSON格式(指定足够深度避免内容截断)
$chromeProcesses | ConvertTo-Json -Depth 10 | Set-Content -Path "c:\Out\demo12.json"

# 导出为XML格式
$chromeProcesses | ConvertTo-Xml -As String | Set-Content -Path "c:\Out\demo12.xml"

问题说明:

  1. 原代码冗余问题:三次重复调用Get-Process完全没必要,一次查询后将结果存入变量复用,能减少系统资源消耗。
  2. Format-Table的误用:Format-*系列命令是用来生成供人阅读的格式化输出,返回的是特殊的格式化对象而非原始进程属性,这会让后续JSON序列化时对象结构嵌套过深,触发截断警告。改用Select-Object直接提取需要的属性,得到的是扁平的自定义对象,序列化时不会出现深度问题。
  3. JSON截断问题:即使改用Select-Object,部分属性(如StartTime是DateTime对象)仍有嵌套结构,默认序列化深度(2)不足以完整转换,加上-Depth 10参数可确保所有必要属性被完整序列化。

内容的提问来源于stack exchange,提问作者Lytor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:05:22