误删Azure DevOps Release-X,如何通过PAT及PowerShell脚本恢复?
恢复Azure DevOps中误删的Release版本
前提条件
- 拥有项目管理员或发布管理员权限
- PAT令牌需授予
Release (Read & Manage)权限 - 误删的Release未超过平台默认90天的保留期限
步骤1:定位已删除的Release ID
执行以下PowerShell脚本,筛选出目标删除发布的ID:
$orgUrl = "https://dev.azure.com/你的组织名" $projectName = "你的项目名" $pat = "你的PAT令牌" $encodedPat = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$pat")) # 获取所有已删除的发布列表 $deletedReleasesUrl = "$orgUrl/$projectName/_apis/release/deletedreleases?api-version=7.1-preview.1" $deletedReleases = Invoke-RestMethod -Uri $deletedReleasesUrl -Headers @{Authorization = "Basic $encodedPat"} -Method Get # 筛选目标发布(示例:匹配名称包含"Release 233"的条目) $targetRelease = $deletedReleases.value | Where-Object { $_.name -like "*Release 233*" } if ($targetRelease) { Write-Host "找到目标删除发布,ID:$($targetRelease.id)" } else { Write-Host "未找到对应删除的发布" exit }
步骤2:恢复目标Release
使用上一步获取的ID,调用恢复API完成操作:
$restoreUrl = "$orgUrl/$projectName/_apis/release/deletedreleases/$($targetRelease.id)/restore?api-version=7.1-preview.1" $restoreResult = Invoke-RestMethod -Uri $restoreUrl -Headers @{Authorization = "Basic $encodedPat"} -Method Post if ($restoreResult.id -eq $targetRelease.id) { Write-Host "Release $($targetRelease.name) 已成功恢复" } else { Write-Host "恢复失败,请检查权限或发布状态" }
注意事项
- 若之前尝试的脚本无效,优先检查API版本是否为
7.1-preview.1及以上 - 若发布关联的管道、环境已被删除,恢复后的Release可能无法正常触发部署
- 恢复后的Release会回到发布列表的"已删除"标签页之外,可正常查看审计记录
内容的提问来源于stack exchange,提问作者Nitro5
相关产品推荐
相关产品推荐

