TFS2015api使用PowerShell从池中删除代理我正在临时从池中删除代理,在代理所在的构建服务器上安装新软件,测试是吗在将代理添加到池之前有效。我想以编程方式执行此操作,无论使用PowerShell是否可行,然后在C#中执行。问题是,无论是通过TFSrestapi还是通过visualstudio附带的工具,我都找不到任何可以帮助我执行此操作的文档。所以我特别想问的是:如何从构建池中删除命名代理,以及如何将命名代理添加回构建池。我基本上想要的是进入TFS的Web管理和取消选中/选中池中的代理的相同功能。编辑->当我尝试使用starain-msft提供的信息启用/禁用代理时,出现以下错误:Invoke-RestMethod:404-未找到文件或目录。服务器错误编辑->删除了大部分错误,因为我发现问题出在我的公司代理中请阅读:https://www.visualstudio.com/en-us/docs/integrate/get-started/rest/basics#http-method-override但我在starain-msft的帮助下得到了它。最终解决方案如下所示:Method,[ValidateNotNullOrEmpty()][string]$ContentType,[ValidateNotNullOrEmpty()][string]$ContentBody,[ValidateNotNullOrEmpty()][System.Net.WebHeaderCollection]$Headers)#从Uri创建Webrequest$webRequest=[System.Net.HttpWebRequest]::CreateHttp($Uri)$webRequest.UseDefaultCredentials=$true$webRequest.Method=$Methodif($Headers.Count-ne0){$webRequest.Headers=$Headers}if(![字符串]::IsNullOrEmpty($ContentType)){$webRequest.ContentType=$ContentType}if(![string]::IsNullOrEmpty($ContentBody)){$Body=[byte[]][char[]]$ContentBody$Stream=$webRequest.GetRequestStream();$Stream.Write($Body,0,$Body.Length);}#获取变量try{[System.Net.WebResponse]$webResponse=$webRequest.GetResponse()}catch{$ErrorMessage=$_.Exception.MessageWrite-Host"TFSwebRequestFailed="$ErrorMessage-ForegroundColorRed}#Streamwebresponse到字符串$webResponseStream=$webResponse.GetResponseStream()$streamReader=New-ObjectSystem.IO.StreamReader$webResponseStream$result=$streamReader.读到结束()|ConvertFrom-Jsonreturn,$result}$agentUri="http://teamfoundation:8080/tfs/Main/_apis/distributedtask/pools/$($poolID)/agents/$($agentID)?api-版本=2.3-preview.1"$contentBody=@"{"maxParallelism":1,"id":INSERTID,"enabled":true#Orfalse}"@$headers=New-ObjectSystem.Net.WebHeaderCollection$headers.Add("X-HTTP-Method-Override,"PATCH")TFSwebRequest-Uri$agentUri-Method"POST"-Headers$headers-ContentType"application/json"-ContentBody$contentBodyAgentPoolandAgent'sRestAPI:获取代理池(请求方式:GET):http://[TFSURL]/_apis/distributedtask/pools?api-version=2.3-preview.1获取代理池的代理(请求方式:GET):http://[TFSURL]/_apis/distributedtask/pools/[poolid]/agents?api-version=2.3-preview.1禁用/启用构建代理(请求方法:PATCH)http://[TFSURL]/_apis/distributedtask/pools/[poolid]/agents/[agentid]?api-version=2.3-preview.1text(content-type:application/json){"enabled":false,"id":[agentid],"maxParallelism":1}从代理池中移除代理(请求方式:delete):http://[TfsURL]/_apis/distributedtask/pools/[poolid]/agents/[agentid]?api-version=2.3-preview.1调用RESTAPI(PowerShell)的简单示例:Param([string]$vstsAccount="",[string]$projectName="",[string]$buildNumber="",[string]$keepForever="true",[string]$user="",[string]$token="")#Base64适当编码个人访问令牌(PAT)$base64AuthInfo=[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}"-f$user,$token)))$uri="https://$($vstsAccount).visualstudio.com/DefaultCollection/$($projectName)/_apis/build/builds?api-version=2.0&buildNumber=$($buildNumber)"$result=Invoke-RestMethod-Uri$uri-MethodGet-ContentType"application/json"-Headers@{Authorization=("Basic{0}"-f$base64AuthInfo)}详情:使用PowerShell调用VSTSAPIC#代码调用RESTAPI:StringMyURI="RESTAPIURL";WebRequestWReq=WebRequest.Create(MyURI);WReq.Credentials=newNetworkCredential([用户名]","[密码]","[域]");WebResponse响应=WReq.GetResponse();Console.WriteLine(((HttpWebResponse)response).StatusDescription);流数据流=response.GetResponseStream();StreamReaderreader=newStreamReader(dataStream);字符串responseFromServer=reader.ReadToEnd();控制台.WriteLine(responseFromServer);识别它们之后,需要重新启动生成代理。没有这样的api可以从代理池中创建或删除代理。不需要编写自己的脚本,下载代理时,只需以管理员身份运行命令提示符,然后在构建代理机器上运行ConfigureAgent.cmd:C:\AgentConfigureAgent.cmd并响应提示。查看https://www.visualstudio.com/en-us/docs/build/admin/agents/v1-windows以上是C#学习教程:TFS2015apiusingPowerShelltoremovethefullcontentofagentfromthepool,如果对大家有帮助有用,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
