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

PowerShell从Azure DevOps JSON数据生成CSV失败求助

解决Azure DevOps PR列表导出CSV异常问题

尝试用Azure CLI导出已完成的Pull Requests到CSV时,执行以下命令:

az repos pr list --organization https://dev.azure.com/hahahaha `
    --project main --status completed `
    --top 10 --skip 0 `
    --query "[*].{pullRequestId:pullRequestId, createdBy:createdBy.displayName,creationDate: creationDate,repository: repository.name, closedDate: closedDate}" `
    | ConvertFrom-Json `
    | ConvertTo-Csv

得到异常输出,显示的是数组对象的属性而非PR数据:

#TYPE System.Object[]
"Count","Length","LongLength","Rank","SyncRoot","IsReadOnly","IsFixedSize","IsSynchronized"
"10","10","10","1","System.Object[]","False","True","False"

但将ConvertTo-Csv替换为Format-Table时,能正常显示结构化数据:

az repos pr list --organization https://dev.azure.com/hahahaha `
    --project main --status completed `
    --top 10 --skip 0 `
    --query "[*].{pullRequestId:pullRequestId, createdBy:createdBy.displayName,creationDate: creationDate,repository: repository.name, closedDate: closedDate}" `
    | ConvertFrom-Json `
    | Format-Table

输出示例:

closedDate                       createdBy        creationDate                     pullRequestId repository
----------                       ---------        ------------                     ------------- ----------
2024-03-26T13:50:27.781982+00:00 dddd dddddd      2024-03-22T20:33:39.322343+00:00          3966 zzzzzzzzzzzzzzzzzzzz
2024-03-26T13:07:43.264020+00:00 eeeeee eeeeeeeee 2024-03-26T12:13:30.279093+00:00          3987 wwwwwwwwwwwwwww    

问题原因

ConvertFrom-Json返回的数组对象被ConvertTo-Csv直接当作单一对象处理,而非枚举数组内的每个PR条目,导致导出的是数组自身的属性而非PR数据。

修复方法

方法1:强制枚举数组元素

在ConvertFrom-Json后添加ForEach-Object(简写%),逐个输出数组内的PR对象,确保ConvertTo-Csv处理的是每条PR数据:

az repos pr list --organization https://dev.azure.com/hahahaha `
    --project main --status completed `
    --top 10 --skip 0 `
    --query "[*].{pullRequestId:pullRequestId, createdBy:createdBy.displayName,creationDate: creationDate,repository: repository.name, closedDate: closedDate}" `
    | ConvertFrom-Json `
    | ForEach-Object { $_ } `
    | ConvertTo-Csv -NoTypeInformation

方法2:先存变量再导出

将ConvertFrom-Json的结果赋值给变量,再通过变量管道到ConvertTo-Csv,PowerShell会自动枚举数组元素:

$pullRequests = az repos pr list --organization https://dev.azure.com/hahahaha `
    --project main --status completed `
    --top 10 --skip 0 `
    --query "[*].{pullRequestId:pullRequestId, createdBy:createdBy.displayName,creationDate: creationDate,repository: repository.name, closedDate: closedDate}" `
    | ConvertFrom-Json

$pullRequests | ConvertTo-Csv -NoTypeInformation

额外说明

添加-NoTypeInformation参数可以去掉CSV开头的#TYPE标识,让输出更符合标准CSV格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:53:15