【发布时间】:2019-06-17 16:39:08
【问题描述】:
我正在尝试通过 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",
但如果对 Release Name 使用相同的过滤格式,
https://{{organization}}.vsrm.visualstudio.com/{{project}}/_apis/release/releases?api-version=5.0&releaseName="Test-Release-MyService"
我得到了 50 个结果,其中没有一个符合该条件,无论我是否将字符串括在引号中。此外,我真正想做的是让响应仅包含 releaseName 包含“XYZ”的记录。
所以问题是:“contains” 是否有过滤器运算符,所以我只能返回版本名称包含“XYZ”子字符串的记录?
提前感谢您的建议。
【问题讨论】:
-
我没有办法对此进行测试,但我猜要使用的正确参数是“searchText”。请参阅 API 文档:docs.microsoft.com/en-us/rest/api/azure/devops/release/releases/… 我什至没有将“releaseName”视为有效参数。
-
啊,我只是假设它是返回数据中的值之一,我可以对其进行过滤。但是您的评论是有道理的,如果它不是 URI 参数之一,则无法对其进行过滤。现在这似乎很明显,我很尴尬。因此,由于我无法过滤名称,我是否必须在每条记录进入时对其进行评估?
-
没问题,容易犯错!看起来 searchText 的描述说:“名称包含 searchText 的版本。”看来您可以使用它按名称过滤?
-
所以这似乎是我需要去的方向。但是当我使用它时,我仍然会得到 50 个不匹配的结果。我还缺少什么吗?
https://vsrm.dev.azure.com/{{organization}}/{{project}}/_apis/release/releases?searchText =298&api-version=5.0 -
嗯,我不确定是不是故意的,但是searchText后面有一个空格?否则,如果无法访问 API,我不确定您还能尝试什么。也许因为这与 API 特别相关,您可以尝试在 Microsoft 论坛中发帖?