Azure DevOps 工作项附件上传日期

问题描述

目前我有许多针对 DevOps 中不同工作项的附件(都在一个项目站点内)。我想有很多附件是在指定的签核日期之后上传的,我希望能够下拉数据,以便我可以将附件上传日期与签核日期进行比较。

我可以看到 DevOps 中有一个附件计数字段,但我没有发现任何附件。这可能吗?如果我能以某种方式将结果输入电子表格,那么我就可以做我需要做的事情,因为签字日期是我知道我可以得到的自定义字段

解决方法

不幸的是,我有很多工作项目要检查 2300(ish)。我可以一次查询的工作项数量是否有最大限制?

说明:

此 Powershell 示例将执行以下两个 Rest API:Wiql - Query By WiqlWork 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


}

结果:

enter image description here

,

当然,您可以获取附件详细信息。不幸的是,您将不得不使用 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"
            }
        }
    ],...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...