Azure DevOps 工作项附件上传日期
Azure DevOps Work Item Attachment Upload Date
我目前有许多针对 DevOps 中不同工作项的附件(都在一个项目站点中)。我认为有一些附件是在指定的签收日期之后上传的,希望能够下拉数据以便我可以将附件上传日期与签收日期进行比较。
我可以看到 DevOps 中有一个附件计数字段,但我无法发现任何附件。这可能吗?如果我能以某种方式将结果放入电子表格中,那么我就可以做我需要做的事情,因为签字日期是我知道我可以得到的自定义字段。
当然可以,您可以获得附件详细信息。不幸的是,您将不得不使用 Azure DevOps API。查询编辑器仅限于查询附件计数。
您将能够使用与此类似的查询来获取完整的附件详细信息
运行 在替换令牌后在邮递员中,或直接在您的浏览器中(您的身份验证将继续):
您需要用逗号分隔您的工作项 ID(例如:1,2,3)。
您将能够在 JSON:
的 关系 属性 中找到您的工作项详细信息
...
"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"
}
}
],
...
I've got quite a lot of work items to check through unfortunately 2300(ish). Is there a max limit for the number of work items I can query at once??
解释:
此 Powershell 示例将执行以下两个 Rest APIs:Wiql - Query By Wiql and Work Items - Get Work Item
Wiql - 通过 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
}
结果:
我目前有许多针对 DevOps 中不同工作项的附件(都在一个项目站点中)。我认为有一些附件是在指定的签收日期之后上传的,希望能够下拉数据以便我可以将附件上传日期与签收日期进行比较。
我可以看到 DevOps 中有一个附件计数字段,但我无法发现任何附件。这可能吗?如果我能以某种方式将结果放入电子表格中,那么我就可以做我需要做的事情,因为签字日期是我知道我可以得到的自定义字段。
当然可以,您可以获得附件详细信息。不幸的是,您将不得不使用 Azure DevOps API。查询编辑器仅限于查询附件计数。
您将能够使用与此类似的查询来获取完整的附件详细信息
运行 在替换令牌后在邮递员中,或直接在您的浏览器中(您的身份验证将继续):
您需要用逗号分隔您的工作项 ID(例如:1,2,3)。
您将能够在 JSON:
的 关系 属性 中找到您的工作项详细信息 ...
"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"
}
}
],
...
I've got quite a lot of work items to check through unfortunately 2300(ish). Is there a max limit for the number of work items I can query at once??
解释:
此 Powershell 示例将执行以下两个 Rest APIs:Wiql - Query By Wiql and Work Items - Get Work Item
Wiql - 通过 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
}
结果: