我正在Postman中运行一些Azure DevOps API查询,这些查询成功返回了预期的结果,其中的一个片段在下面共享,并且仅代表数十个类似迭代输出中的一个。出于该说明的目的,让我们假设下面的Id值66的片段仅是100中的一个。
"id": 66,
"buildNumber": "20210401.7",
"status": "completed",
"result": "succeeded",
"queueTime": "2021-04-01T16:50:04.9218848Z",
"startTime": "2021-04-01T16:50:15.3583291Z",
"finishTime": "2021-04-01T16:50:53.7221605Z",
我现在希望使用Powershell foreach循环迭代地解析100多条记录,将“id”、“buildNumber”、“status”和“result”值逐行输出到输出文件中。
所需的输出应该如下所示:
"id": 66,
"buildNumber": "20210401.7",
"status": "completed",
"result": "succeeded",
"id": 65,
"buildNumber": "20210331.5",
"status": "completed",
"result": "failed",
"id": 64,
"buildNumber": "20210331.4",
"status": "completed",
"result": "succeeded",
如有任何关于如何实现这一目标的建议或想法,我们将不胜感激。
Clear-Host $connectionToken="[MY-PAT]”$base64AuthInfo= [系统.转换]::ToBase 64 String([系统.文本.编码]::ASCII.GetBytes(“:$($connectionToken)”))
$url = 'https://dev.azure.com/[MY-AZURE-ORG]/[MY-TEAM-PROJECT]/_apis/build/builds?api-version=6.0'
$PackageInfo =(Invoke-RestMethod -Uri $url -Method Get -UseDefaultCredential -Headers @{Authorization=(“Basic {0}”-f $base64AuthInfo)})
$LatestVersion= $PackageInfo.value.buildnumber|先选择对象1
$BuildResult= $PackageInfo.value.result|先选择对象1
foreach($item in $PackageInfo){ Write-Host““Write-Host“Latest build = $LatestVersion”“|““生成结果= $BuildResult”写入主机““
}
从上图可以看出,通过检索最后一个构建记录,我得到了上面由我的PowerShell脚本返回的输出,这很棒。
然而,我不仅仅是在最后一个构建记录之后。我要所有的建造记录一行一行列出来。因此,任何对我现有脚本的改进都将是最合适的,因为在我看来,它只需要一个小的调整。
省略Select-Object将返回所有预期的数据,但以下面的格式显示,而不是以我喜欢的单行格式显示。
2条答案
按热度按时间abithluo1#
您正在获取构建信息,因此我假设您正在使用以下Azure DevOps API:
https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=6.0
使用PowerShell,首先需要进行身份验证,您可以使用OAuth2身份验证:参考:https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops
可以使用PAT访问方法,但需要从UI手动生成令牌。
gg58donl2#