如何过滤Azure Devops REST API GET请求的结果

时间:2019-06-14 17:36:04

标签: powershell azure-devops

我正在尝试通过Powershell脚本收集有关Azure Devops中发布的一些指标。

我的开发经验非常有限,并且是PowerShell的新手。这是我第一次使用API​​。到目前为止,我已经能够进行身份验证,返回发布列表,遍历发布并将数据导出到文件中。现在,我需要根据发布名称的子字符串来过滤发布。作为记录,我一直在Postman中进行初始测试,以确保语法和结果正确。然后,我将工作语法迁移到了Powershell。

https://{{organization}}.vsrm.visualstudio.com/{{project}}/_apis/release/releases?api-version=5.0

如果我添加id过滤器,如下所示: https://{{organization}}.vsrm.visualstudio.com/{{project}}/_apis/release/releases?api-version=5.0&releaseId=34567

我得到这个结果:

"id": 34567, "name": "Test-Release-MyService",

但是,如果发布名称使用相同的过滤器格式, https://{{organization}}.vsrm.visualstudio.com/{{project}}/_apis/release/releases?api-version=5.0&releaseName="Test-Release-MyService"

无论是否将字符串用引号引起来,我都会得到50个结果均不符合该条件的结果。此外,我真正想做的是使响应仅包含releaseName包含“ XYZ”的记录。

那么问题是:是否有“包含” 的过滤器运算符,所以我只返回发布名称包含“ XYZ”子字符串的记录?

谢谢您的建议。

1 个答案:

答案 0 :(得分:0)

您在Azure DevOps REST API中使用的每个参数都必须与文档中的描述一致,Azure DevOps REST API不支持自定义参数。对于您的问题,参数searchText用于过滤具有包含关键字的发布名称的搜索结果。我已经过POSTMAN的测试,可以调用api,它可以正常工作。另外,参数searchText的值不区分大小写。 Filter release name

如果您想进行更多过滤,实际上您可以使用powershell或其他客户端库反序列化对对象的json响应,并进行一些转换或过滤。以下文档可能对您有所帮助:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertfrom-json?view=powershell-6 https://devblogs.microsoft.com/scripting/playing-with-json-and-powershell/