调用Azure DevOps Build REST API时Demands参数未生效求助
解决方案:指定特定代理执行Azure DevOps构建
正确的Demands参数格式
要让系统正确识别代理需求,需采用以下两种有效格式之一:
格式1:字符串数组(推荐)
直接将需求表达式以字符串形式放入数组,这是最简洁且不易出错的写法:
$body = @{ # 填充其他必填参数(如definition、project等) "demands" = @( "Agent.Name -equals agent.01" ) }
格式2:对象数组(需完整字段)
若使用对象形式定义需求,必须包含name、operator和value三个字段——你之前的写法缺失了operator字段,这是导致需求不生效的核心原因:
$body = @{ # 填充其他必填参数 "demands" = @( @{ "name" = "Agent.Name" "operator" = "equals" "value" = "agent.01" } ) }
额外验证要点
- 代理名称需完全匹配:Azure DevOps对代理名称区分大小写,确保输入的名称和目标代理的实际名称(含大小写)一致。
- 确认代理状态:目标代理需处于在线、未禁用状态,且属于当前构建指定的代理池。
- 检查构建定义原有需求:如果构建定义本身已配置了代理需求,需保证新增的代理需求和原有需求兼容,避免因需求冲突导致系统无法匹配到目标代理。
内容的提问来源于stack exchange,提问作者Sena
相关产品推荐
相关产品推荐

