如何通过Azure DevOps REST API从本地Azure DevOps Server导出指定构建间变更的工作项至Excel并生成发布说明
如何通过Azure DevOps REST API从本地Azure DevOps Server导出指定构建间变更的工作项至Excel并生成发布说明
嗨,我看到你作为新手已经尝试写出了基础脚本,这已经很棒了!我来一步步帮你完善代码,解决导出Excel和生成发布说明的问题。
一、修正并完善获取工作项的PowerShell脚本
你现有脚本里有个小语法错误:$responsewe.value | ConvertTo-Json write-host $d1这行不能连写,得分开执行。另外我们可以优化脚本结构,增加错误捕获,方便后续排查问题。下面是修正后的完整基础脚本:
# 配置核心参数 $AzureDevOpsPAT = "**********************************" # 你的个人访问令牌(PAT) $fromBuildId = "161" # 起始构建ID $toBuildId = "176" # 结束构建ID $AzureDevOpsServer = "AzureDevOpsServerName" # 你的本地Azure DevOps服务器名称 $projectName = "ProjectName" # 目标项目名称 # 构建API认证头 $AzureDevOpsAuthenicationHeader = @{ Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) } # 注意:确保你的PAT令牌拥有**Build(读取)**和**Work Items(读取)**权限,否则API请求会失败 # 构建API请求地址 $uriAccount = "https://$AzureDevOpsServer/DefaultCollection/$projectName/_apis/build/workitems?fromBuildId=$fromBuildId&toBuildId=$toBuildId&api-version=5.0" # 调用API获取工作项数据 try { $responsewe = Invoke-RestMethod -Uri $uriAccount -Method Get -Headers $AzureDevOpsAuthenicationHeader $workItems = $responsewe.value Write-Host "成功获取到 $($workItems.Count) 个变更工作项" } catch { Write-Host "API请求失败:$($_.Exception.Message)" exit 1 }
二、将工作项导出到Excel文件
要在PowerShell中便捷处理Excel,推荐使用社区维护的ImportExcel模块(免费且易用),步骤如下:
- 先安装模块(仅需安装一次):
Install-Module -Name ImportExcel -Scope CurrentUser -Force
- 在基础脚本末尾添加导出Excel的代码:
# 筛选并整理需要导出的字段(可根据需求自行调整) $exportData = $workItems | Select-Object ` @{Name="工作项ID"; Expression={$_.id}}, @{Name="工作项类型"; Expression={$_.fields.'System.WorkItemType'}}, @{Name="标题"; Expression={$_.fields.'System.Title'}}, @{Name="状态"; Expression={$_.fields.'System.State'}}, @{Name="指派给"; Expression={$_.fields.'System.AssignedTo'.displayName}}, @{Name="创建日期"; Expression={$_.fields.'System.CreatedDate'}} # 导出到指定路径的Excel文件 $exportPath = "构建变更工作项列表.xlsx" $exportData | Export-Excel -Path $exportPath -AutoSize -BoldTopRow Write-Host "已成功导出工作项到文件:$exportPath"
这段代码会自动创建Excel文件,并且自动调整列宽、加粗表头,让表格更易读。
三、基于工作项生成发布说明
我们可以把工作项整理成清晰的Markdown格式发布说明,方便团队查看或直接复制到Azure DevOps发布记录中。在脚本末尾添加以下代码:
# 构建发布说明内容 $releaseNotes = "# 发布说明`n`n## 本次构建变更工作项`n" # 按工作项类型分组(比如需求、Bug、任务) $groupedWorkItems = $workItems | Group-Object -Property { $_.fields.'System.WorkItemType' } foreach ($group in $groupedWorkItems) { $releaseNotes += "### $($group.Name)`n" foreach ($item in $group.Group) { $releaseNotes += "- **#$($item.id)** $($item.fields.'System.Title')`n" } $releaseNotes += "`n" } # 保存发布说明到本地文件 $releaseNotesPath = "发布说明.md" $releaseNotes | Out-File -Path $releaseNotesPath -Encoding utf8 Write-Host "已成功生成发布说明到文件:$releaseNotesPath"
生成的Markdown文件会按工作项类型分组展示,结构清晰,直接就能用。
完整脚本整合
把上面三部分代码合并起来,就是一个从获取数据到导出Excel、生成发布说明的完整流程脚本,你可以直接运行使用。
备注:内容来源于stack exchange,提问作者Herr_grun
相关产品推荐
相关产品推荐

