Azure DevOps 工作项附件上传日期
Posted
技术标签:
【中文标题】Azure DevOps 工作项附件上传日期【英文标题】:Azure DevOps Work Item Attachment Upload Date 【发布时间】:2021-05-18 17:42:00 【问题描述】:我目前有许多针对 DevOps 中不同工作项的附件(都在一个项目站点中)。我认为在指定的签署日期之后上传了许多附件,并且希望能够拉下数据,以便我可以将附件上传日期与签署日期进行比较。
我可以看到 DevOps 中有一个附件计数字段,但我无法发现任何附件。这可能吗?如果我能以某种方式将结果输入电子表格,那么我就可以做我需要做的事情,因为签署日期是我知道我可以得到的自定义字段。
【问题讨论】:
嗨@James 这张票有什么更新吗?如果答案能给你一些帮助,请随时告诉我。如果答案可以解决这个问题,你可以考虑accepting one as answer。 【参考方案1】:不幸的是,我有很多工作项目要检查 2300(ish)。我一次可以查询的工作项的数量是否有最大限制??
说明:
此 Powershell 示例将执行以下两个 Rest API:Wiql - Query By Wiql 和 Work Items - Get Work Item
Wiql - Query By Wiql Rest API 将列出所有工作项。限制为 20000 个工作项。它可以满足您的要求。
Work Items - Get Work Item 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
结果:
【讨论】:
谢谢@Kevin - 这看起来像我所追求的。我如何将其转换为 CSV?有人告诉我在脚本底部添加 Export-CSV -Path C:[Path][FileName].csv(最后一个 下方) - 对吗? 嗨@詹姆斯。是的。您可以添加脚本 Export-CSV 并且 -Append 参数是必需的。此外,您还需要更改响应输出的格式。请参考我的更新。如果答案能给你一些帮助,请随时告诉我。【参考方案2】:当然,您可以获得附件详细信息。不幸的是,您将不得不使用 Azure DevOps API。查询编辑器仅限于按附件计数进行查询。
您将能够使用与此类似的查询来获取完整的附件详细信息
替换令牌后在邮递员中运行此命令,或直接在您的浏览器中运行(您的身份验证将继续):
https://dev.azure.com/**YOUR_ORGANIZATION**/**YOUR_PROJECT**/_apis/wit/workitems?ids=**WORK_ITEM_IDs**&api-version=6.0&$expand=relations
您需要用逗号分隔您的工作项 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"
],
...
【讨论】:
谢谢 - 不幸的是,我有很多工作项目要检查 2300(ish)。我一次可以查询的工作项的数量是否有最大限制?? 哎呀!通过 API 查询时限制为 200 个工作项,通过 UI 查询时限制为 20,000 个工作项。 好的,那么你提供给我的内容运行了 12 次?可能会更糟……我知道也可能会更好,但它可以让我得到我需要的东西。 是的,您需要运行 12 次左右才能拉出所有内容。如果这得到了你所需要的,请将其标记为答案:)以上是关于Azure DevOps 工作项附件上传日期的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Flow将Outlook附件添加到VSTS工作项