我正在使用Azure Devops,并且想遍历拉取请求列表。我正在使用this API request来检索拉取请求列表。
当我检查URL时,我看到:
这是正确的。我有3个开放请求请求。我要做的是检查每个对象的特定属性sourceRefName
。
有匹配项时,我想返回完整的对象:
我尝试过:
$listOfPullRequestsURL = "https://dev.azure.com/*****/*****/_apis/git/repositories/*****/pullrequests?api-version=5.0"
$listOfPullRequests = Invoke-RestMethod -Uri $listOfPullRequestsURL -Headers @{Authorization = $pat } -Method Get
Write-Host $listOfPullRequests
Write-Host $listOfPullRequests | ConvertFrom-Json
ForEach ($object in $listOfPullRequests) {
Write-Host "### OBJECT ###"
Write-Host $object
Write-Host $object.sourceRefName
}
结果是:
如何浏览每个对象?是否可以基于1属性返回整个对象?
答案 0 :(得分:1)
$listOfPullRequestsURL = "https://dev.azure.com/****/****/_apis/git/repositories/****/pullrequests?api-version=5.0"
$listOfPullRequests = Invoke-RestMethod -Uri $listOfPullRequestsURL -Headers @{Authorization = $pat } -Method Get
$listOfPullRequests.value | ForEach-Object {
if ($_.sourceRefName -eq $env:BUILD_SOURCEBRANCH) {
Write-Host $_
}
}
这显示了正确的JSON对象。
答案 1 :(得分:0)
我知道您已经照顾好了。
只想在此处添加-为避免这些问题,我个人认为这样做更干净,使用哈希表的麻烦也更少。
在Powershell v6中,很容易使用内置的ConvertFrom-Json标志-AsHashtable
转换为哈希表。
$hashPullRequests = $listOfPullRequests | ConvertFrom-Json -AsHashtable
,然后像其他哈希表一样遍历$hashPullRequests
。