试图使用REST api创建Devops Agent池

问题描述 投票:0回答:1

我试图使用 powershell 和 invoke-restmethod 创建一个代理池(Azure devops Server)。要做到这一点,我使用下面的参考资料来尝试建立一个正确的json请求体。https:/docs.microsoft.comen-usrestapiazuredevopsdistributedtaskpoolsadd?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": "Value cannot be null.\r\nParameter name: pool.Name", "typeName": "System.ArgumentNullException, mscorlib", "typeKey": "ArgumentNullException", "errorCode":0, "eventId":0}。

我感觉这只是我对编码术语和阅读参考文档的经验不足,但我不清楚是格式错误还是我错过了一个强制性参数的格式(id或名称?

powershell azure-devops-rest-api
1个回答
0
投票

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

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

请求体应该是一个 json 格式。 尝试明确添加 转换为Json 为你的帖子正文。

更多细节请看这个链接中Daniel的回复。TFS 2018 以程序化方式创建代理池

© www.soinside.com 2019 - 2024. All rights reserved.