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 工作项附件上传日期的主要内容,如果未能解决你的问题,请参考以下文章

工作项附件会使 TFS-DevOps 数据库变慢吗?

在 Azure 项目中创建附件不起作用

Microsoft Flow将Outlook附件添加到VSTS工作项

如何在 Azure Devops 中检查某个日期的记录状态

Microsoft Graph API - 如何将附件上传到列表项

如何链接到工作项描述中添加的附件?