如何通过命令行禁用 AzureDevOps 池中的自托管代理
How to disable self-hosted agent in AzureDevOps pool via command-line
我们在 AzureDevOps 中有多个自托管构建代理,我想自动化他们的维护。
(诸如 Windows 更新或 VSbuild 工具之类的东西)
我想禁用池中的代理,以便它在更新 运行 时不接收构建任务。
有谁知道如何通过命令行执行此操作?
Does anyone know how to do this via command line?
您可以在本地计算机中使用 Powershell.exe(Cmd.exe is not recommended for calling azure devops rest api
) 而不是 CMD,以通过以下方式禁用任何自托管代理 api:
Patch https://dev.azure.com/{OrganizationName}/_apis/distributedtask/pools/{PoolID}/agents/{AgentID}?api-version=5.0
请求正文:
{
"id":{AgentID},"enabled":false
}
详情:
转到组织设置=>代理池=>选择托管您的自托管代理的池=>检查 Agents
选项卡并单击您的代理之一以查看详细信息。然后你可以找到 PoolID
和 AgentID
.
现在让我们创建一个 PAT 来对 Azure DevOps 进行身份验证。只有代理池的读取和管理权限就足够了。
假设我的 organizationName 是 TestOrganization
,那么我最终的 powershell 脚本将是:
(您可以在 Windows Powershell ISE 中 运行 它)
$token = "wjqtxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxtgiga"
$url="https://dev.azure.com/TestOrganization/_apis/distributedtask/pools/10/agents/9?api-version=5.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @'
{
"id":9,"enabled":false
}
'@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Patch -ContentType application/json -Body $JSON
write-host $response | ConvertTo-Json -Depth 100
有了 $token(您的 PAT)、PoolID 和 AgentID,您可以通过 "enabled":xxx(true or false here)
轻松控制哪个代理成为 enabled/disabled
。请注意,您需要替换 URL 和请求正文中的 agentID
。
我们在 AzureDevOps 中有多个自托管构建代理,我想自动化他们的维护。 (诸如 Windows 更新或 VSbuild 工具之类的东西)
我想禁用池中的代理,以便它在更新 运行 时不接收构建任务。
有谁知道如何通过命令行执行此操作?
Does anyone know how to do this via command line?
您可以在本地计算机中使用 Powershell.exe(Cmd.exe is not recommended for calling azure devops rest api
) 而不是 CMD,以通过以下方式禁用任何自托管代理 api:
Patch https://dev.azure.com/{OrganizationName}/_apis/distributedtask/pools/{PoolID}/agents/{AgentID}?api-version=5.0
请求正文:
{
"id":{AgentID},"enabled":false
}
详情:
转到组织设置=>代理池=>选择托管您的自托管代理的池=>检查
Agents
选项卡并单击您的代理之一以查看详细信息。然后你可以找到PoolID
和AgentID
.现在让我们创建一个 PAT 来对 Azure DevOps 进行身份验证。只有代理池的读取和管理权限就足够了。
假设我的 organizationName 是
TestOrganization
,那么我最终的 powershell 脚本将是:
(您可以在 Windows Powershell ISE 中 运行 它)
$token = "wjqtxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxtgiga"
$url="https://dev.azure.com/TestOrganization/_apis/distributedtask/pools/10/agents/9?api-version=5.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @'
{
"id":9,"enabled":false
}
'@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Patch -ContentType application/json -Body $JSON
write-host $response | ConvertTo-Json -Depth 100
有了 $token(您的 PAT)、PoolID 和 AgentID,您可以通过 "enabled":xxx(true or false here)
轻松控制哪个代理成为 enabled/disabled
。请注意,您需要替换 URL 和请求正文中的 agentID
。