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

如何在Azure DevOps中识别指定时间内无活动的项目及负责人?

识别Azure DevOps组织内无活动的项目及负责人

要批量排查指定时间段内无活动的项目,最可靠的方式是通过Azure DevOps REST API结合脚本自动化完成,以下是具体步骤和示例脚本:

一、前置准备

  • 生成一个Azure DevOps个人访问令牌(PAT),需要包含以下权限:
    • Code (Read)
    • Build (Read)
    • Release (Read)
    • Work Items (Read)
    • Project and Team (Read)
  • 确定要排查的起始日期(比如过去一年:(Get-Date).AddYears(-1).ToString("yyyy-MM-ddTHH:mm:ssZ"),需为ISO 8601格式)

二、核心步骤

1. 获取组织内所有项目

调用Projects API获取组织下所有项目的ID、名称等基础信息:

$orgName = "你的组织名"
$pat = "你的PAT令牌"
$startDate = (Get-Date).AddYears(-1).ToString("yyyy-MM-ddTHH:mm:ssZ")

$headers = @{
    Authorization = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))
}

$projects = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/_apis/projects?api-version=7.1-preview.4" -Headers $headers -Method Get

2. 检查项目是否有活动

对每个项目,依次检查以下四类活动,只要有一类存在活动,就标记为活跃项目:

  • Git提交(若项目使用TFVC,需替换为TFVC变更集查询)
  • 构建记录
  • 发布记录
  • 工作项变更

示例检查逻辑:

$inactiveProjects = @()

foreach ($project in $projects.value) {
    $projectId = $project.id
    $projectName = $project.name
    $hasActivity = $false

    # 检查Git提交
    $repos = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/git/repositories?api-version=7.1-preview.1" -Headers $headers -Method Get
    foreach ($repo in $repos.value) {
        $commits = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/git/repositories/$($repo.id)/commits?searchCriteria.fromDate=$startDate&api-version=7.1-preview.1" -Headers $headers -Method Get
        if ($commits.value.Count -gt 0) {
            $hasActivity = $true
            break
        }
    }

    if (-not $hasActivity) {
        # 检查构建记录
        $builds = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/build/builds?minTime=$startDate&api-version=7.1-preview.7" -Headers $headers -Method Get
        if ($builds.value.Count -gt 0) {
            $hasActivity = $true
        }
    }

    if (-not $hasActivity) {
        # 检查发布记录
        $releases = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/release/releases?minCreatedTime=$startDate&api-version=7.1-preview.8" -Headers $headers -Method Get
        if ($releases.value.Count -gt 0) {
            $hasActivity = $true
        }
    }

    if (-not $hasActivity) {
        # 检查工作项变更
        $wiqlQuery = @"
        {
            "query": "Select [System.Id] From WorkItems Where [System.ChangedDate] >= '$startDate'"
        }
"@
        $workItems = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/wit/wiql?api-version=7.1-preview.2" -Headers $headers -Method Post -Body $wiqlQuery -ContentType "application/json"
        if ($workItems.workItems.Count -gt 0) {
            $hasActivity = $true
        }
    }

    # 如果无任何活动,加入待清理列表
    if (-not $hasActivity) {
        $inactiveProjects += [PSCustomObject]@{
            ProjectName = $projectName
            ProjectId = $projectId
        }
    }
}

3. 获取无活动项目的负责人

通过Security Roles API获取项目的Project Administrators组成员(通常即为项目负责人):

foreach ($proj in $inactiveProjects) {
    $roleAssignments = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/_apis/securityroles/scopes/projectrole/$($proj.ProjectId)/roleassignments?api-version=7.1-preview.1" -Headers $headers -Method Get
    # 筛选Project Administrator角色的用户
    $adminRole = $roleAssignments.value | Where-Object { $_.roleName -eq "Project Administrator" }
    $owners = $adminRole.members | ForEach-Object { $_.displayName } -join ", "
    
    $proj | Add-Member -MemberType NoteProperty -Name "Owners" -Value $owners
}

# 输出结果
$inactiveProjects | Format-Table ProjectName, ProjectId, Owners -AutoSize

三、注意事项

  • 若项目使用TFVC版本控制,需替换Git提交检查为TFVC变更集查询:Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/tfvc/changesets?searchCriteria.fromDate=$startDate&api-version=7.1-preview.1"
  • 部分项目可能存在未关联到上述四类活动的操作(如Wiki编辑),若需要排查可额外调用Wiki API补充检查
  • 脚本可根据实际需求调整活动检查的范围(比如忽略某些类型的构建)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:18:27