问题描述
目前我有许多针对 DevOps 中不同工作项的附件(都在一个项目站点内)。我想有很多附件是在指定的签核日期之后上传的,我希望能够下拉数据,以便我可以将附件上传日期与签核日期进行比较。
我可以看到 DevOps 中有一个附件计数字段,但我没有发现任何附件。这可能吗?如果我能以某种方式将结果输入电子表格,那么我就可以做我需要做的事情,因为签字日期是我知道我可以得到的自定义字段。
解决方法
不幸的是,我有很多工作项目要检查 2300(ish)。我可以一次查询的工作项数量是否有最大限制?
说明:
此 Powershell 示例将执行以下两个 Rest API:Wiql - Query By Wiql 和 Work Items - Get Work Item
Wiql - Query By Wiql Rest API 将列出所有工作项。限制为 20000 个工作项。它可以满足您的要求。
工作项 - 获取工作项 Rest API 将根据第一个 Rest API 的 ID 获取工作项。
然后您可以使用 $expand=relations
获取工作项附件。
更新:
要获取所有工作项附件并导出到 csv,您可以尝试以下示例:
$token = "PAT"
$url="https://dev.azure.com/{Org}/_apis/wit/wiql?api-version=5.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @'
{
"query": "Select [System.Id],[System.Title],[System.State] From WorkItems Where [System.WorkItemType] <> ''"
}
'@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json
ForEach( $workitemid in $response.workItems.id )
{
echo $workitemid
$url1="https://dev.azure.com/{Org}/{Project}/_apis/wit/workitems/$($workitemid)?" + "`$expand" + "=relations&api-version=6.0"
$response1 = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method Get
#Write-Host "Pipeline = $($response1| ConvertTo-Json -Depth 100)"
$date = $response1.relations.attributes.resourceCreatedDate
$date1 = [String]$date
$Attachmentmentname = $response1.relations.attributes.name
$Attachmentmentname1 = [String]$Attachmentmentname
$workitemtitle = $response1.fields.'System.Title'
echo Workitemid: $workitemid WorkitemTitle: $workitemtitle Attachmentdate: $date
$Output = New-Object -TypeName PSObject -Property @{
id = $workitemid
date = $date1
Attachmentmentname = $Attachmentmentname1
Title = $workitemtitle
} | Select-Object id,Title,Attachmentmentname,date
$Output | Export-Csv D:\GPoutput.csv -Append
}
结果:
,当然,您可以获取附件详细信息。不幸的是,您将不得不使用 Azure DevOps API。查询编辑器仅限于查询附件计数。
您将能够使用类似于此的查询获取完整的附件详细信息
在替换令牌后在邮递员中运行此程序,或直接在您的浏览器中运行(您的身份验证将继续进行):
您需要用逗号分隔您的工作项 ID(例如:1,2,3)。
您将能够在 JSON 的 relations 属性中找到您的工作项详细信息:
...
"relations": [
{
"rel": "AttachedFile","url": "https://dev.azure.com/YOUR ORG/GUID/_apis/wit/attachments/GUID","attributes": {
"authorizedDate": "2021-02-15T20:13:13.333Z","id": 1234567,"resourceCreatedDate": "2021-02-15T20:13:10.607Z","resourceModifiedDate": "2020-12-18T00:31:48.663Z","revisedDate": "9999-01-01T00:00:00Z","resourceSize": 123456,"name": "TEST-ATTACHMENT.PNG"
}
}
],...