首页 > 解决方案 > 用于从 Azure DevOps 中删除多个离线代理的 API

问题描述

我们的 Azure DevOps 构建代理是在 Kubernetes 上设置的。失败的 pod 可以很容易地从 kube 中删除,但它们在 Azure DevOps Web UI 中显示为“离线”代理。

加班线下代理的名单真的很长。有没有办法以编程方式删除它们?

标签: kubernetesazure-devopsazure-devops-rest-apiazure-devops-self-hosted-agent

解决方案


$agents = Invoke-RestMethod -uri 'http://dev.azure.com/{organization}/_apis/distributedtask/pools/29/agents' -Method Get -UseDefaultCredentials
$agents.value |
    Where-Object { $_.status -eq 'offline' } |
    ForEach-Object {
        Invoke-RestMethod -uri "http://dev.azure.com/{organization}/_apis/distributedtask/pools/29/agents/$($_.id)?api-version=4.1" -Method Delete -UseDefaultCredentials
    }

此解决方案的一些假设:

  1. 您正在寻找构建代理
  2. 您已经知道要查找的池的 ID。您也可以通过编程方式进行此操作,或者如果您愿意,只需遍历所有池
  3. 删除任何离线代理没有任何问题

注意: 我使用的是 Azure DevOps Server,因此请-UseDefaultCredentials用您的授权替换。


推荐阅读