如何从PowerShell中以编程方式列出VSTS代理程序池?

时间:2018-07-07 09:05:28

标签: powershell azure-devops powershell-v5.0

我想连接到VSTS并获取代理池列表。我想枚举代理池,然后删除VSTS服务器上的代理。我在VSTS API参考中找不到有关如何执行此操作的任何文档。

我可以像这样连接到VSTS以便列出项目,但是如何列出代理程序池?

$User = 'mark.allison@domain.com'
$PersonalAccessToken = '{PAT_TOKEN}'
$base64authinfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f  $User, $PersonalAccessToken)))
$vstsAccount = "{VSTS_ACCOUNT}"

# projects
$resource = 'projects'
$uri = "https://sabinio.visualstudio.com/DefaultCollection/_apis/$($resource)?api-version=3.0"
$projects = Invoke-RestMethod -Method Get -ContentType application/json -Uri $Uri -Headers @{Authorization=("Basic {0}" -f $base64authinfo)}

1 个答案:

答案 0 :(得分:5)

我也没有在官方文件中找到任何关于它的信息。
但是,通过检查网络流量,我得出以下结论: https://xyz.visualstudio.com/_apis/distributedtask/pools/ 是获取代理池的方法。
因此,通过GET请求,您将获得代理池的列表,其中包括名称,ID和更多属性。如果您使用要删除的池的ID向该URL发送DELETE请求,则该请求将被删除。
如果一开始要获取代理池中的代理,请执行GET到:
https://xyz.visualstudio.com/_apis/distributedtask/pools/POOLID/agents
然后再次获得列出该池的代理的名称,ID等。
要删除该代理,请向 https://xyz.visualstudio.com/_apis/distributedtask/pools/POOLID/agents/AGENTID

发送DELETE请求

因此,在PowerShell脚本中,您也不需要获取“特定于项目”的任何内容,因为该集合的所有项目都可使用AgentPools和Agents。

希望有帮助