Azure DevOps自托管代理是否支持设置定时启用和禁用?
Azure DevOps 自托管代理定时启停方案
Azure DevOps 本身没有内置自托管代理的定时启用/禁用功能,你可以通过以下两种方案实现仅周末启用办公设备上的代理的需求:
方案1:调用Azure DevOps REST API + 定时任务(推荐,可批量管理多代理)
- 第一步:创建个人访问令牌(PAT),权限范围勾选「代理池(Agent Pools)」的读写权限,保存好Token值备用
- 第二步:获取对应代理的ID、所属代理池ID,你可以在代理详情页的URL里提取这两个参数
- 第三步:编写状态切换脚本,调用官方REST API修改代理的启用状态,请求示例如下:
请求方法:PATCH
请求地址:https://dev.azure.com/{你的组织名称}/_apis/distributedtask/pools/{代理池ID}/agents/{代理ID}?api-version=7.1-preview.1
请求Body:
PowerShell 调用示例:{"enabled": true} // 设为false即为禁用$token = "你的PAT值" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$token))) $url = "https://dev.azure.com/你的组织名/_apis/distributedtask/pools/代理池ID/agents/代理ID?api-version=7.1-preview.1" $body = '{"enabled": true}' Invoke-RestMethod -Uri $url -Method Patch -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body - 第四步:在设备上添加定时任务:Windows用系统自带的任务计划程序,Linux/macOS用crontab,设置每周五19点执行启用脚本,每周日22点执行禁用脚本即可。
方案2:直接定时启停代理本地服务(适合单设备场景,操作更简单)
自托管代理本质是运行在设备上的后台服务,你不需要调用API,直接定时启停本地服务即可实现相同效果:
- Windows设备:代理服务名格式为
vstsagent.{组织名}.{代理池名}.{代理名},可以在系统服务列表里查到,定时执行net start 服务名和net stop 服务名即可 - Linux/macOS设备:通过systemctl或对应服务管理命令,定时启停代理服务即可
注意事项
- 你手动切换代理状态的界面开关对应如下:

- 不管用哪种方案,禁用代理/停止服务都只会阻止新的任务分配到该代理,不会终止已经在运行的任务,建议把定时时间设置在没有测试任务运行的闲置时段,避免影响任务执行
- 如果使用启停本地服务的方案,需要确认代理服务安装时选择了「以服务身份运行」,不要勾选「仅当用户登录时运行」,避免定时启动失败
内容的提问来源于stack exchange,提问作者Fiery
相关产品推荐
相关产品推荐

