【问题标题】:Trying to create a Devops Agent pool using REST api尝试使用 REST api 创建 Devops 代理池
【发布时间】:2020-09-04 20:38:23
【问题描述】:

我正在尝试使用 powershell 和 invoke-restmethod 创建代理池(Azure devops 服务器)。为此,我使用下面的参考来尝试构建正确的 json 请求正文。 https://docs.microsoft.com/en-us/rest/api/azure/devops/distributedtask/pools/add?view=azure-devops-rest-5.1 所有基础知识(凭证等 - 我已使用其他 uris 成功运行其他任务) 多次尝试寻找正确的身体,结果几乎相同,下面是最新的示例;

$requestBodyAgentPool = '{
    "Id": "3"
    "name": "Testpool",
    "isHosted": $false,
    "autoSize": $false,
    "poolType": "automation",
    "isLegacy": $false
}'

使用以下内容(通过运行 GET 验证 uri 和凭据)

$uriPool = "http://localhost/DefaultCollection/_apis/distributedtask/pools?api-version=5.1"

Invoke-RestMethod -Uri $uriPool -Method POST -ContentType 'application/json' -Body $requestBodyAgentPool -Credential $cred

失败,下面这对我来说意味着参数 id 为空。

Invoke-RestMethod : {"$id":"1","innerException":null,"message":"值不能为空。\r\n参数名称:pool.Name","typeName":"System .ArgumentNullException, mscorlib","typeKey":"ArgumentNullException","errorCode":0,"eventId":0}

我觉得这只是我对编码术语和阅读参考文档的经验不足,但我不清楚格式是否错误或者我缺少/错误的格式强制参数(id 或名称?)

【问题讨论】:

    标签: powershell azure-devops-rest-api


    【解决方案1】:

    建议您可以使用一些 UI 工具(例如 Postman)来验证您是否能够运行相同的 Rest API。这将帮助您缩小问题范围。

    {
    "name": "{poolname}",
    "autoProvision": $true
    }
    

    请求正文应为 json 格式。尝试为您的帖子正文明确添加 ConvertTo-Json

    更多详情看丹尼尔在此链接的回复:TFS 2018 Create agent pool programatically

    【讨论】:

    • 肯定想多了。 $jsonBodyAgentPool = @{name = 'foo'; autoProvision = $true} $body = ($jsonBodyAgentPool | ConvertTo-Json) Invoke-RestMethod -Uri $uriPool -Method POST -ContentType 'application/json' -Body $body -Credential $cred
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 2021-07-07
    • 2021-08-12
    • 2022-01-02
    • 2019-06-09
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多