是否可以以某种方式备份/导出/下载所有工作项目?我看了一下REST API,但看起来你不能执行f.e.通过这个API查询...VS团队服务备份工作项目
2
A
回答
3
好工作项查询导出到Excel,找到一种方式来完成这项工作。我再看看API文档。页面https://www.visualstudio.com/en-us/docs/integrate/api/wit/overview帮助我。你首先需要做
GET https://{account}.visualstudio.com/defaultcollection/{project}/_apis/wit/queries/{folderpath}?api-version={version}&$expand=wiql
从你需要得到wiql的一部分,这是实际的查询产生的JSON。在此之后,你需要做一个
POST https://{account}.visualstudio.com/defaultcollection/{project}/_apis/wit/wiql?api-version={version}
在身体与{“查询” =“YOURQUERY”}
的JSON因此,您会收到包含所有工作项的网址/ ID的JSON。你需要通过他们去,并通过
GET URL?$expand=all
通知查询每个单独的工作项:加$扩大=所有只有当你需要的关系和附件吗?。 我把一些东西放在一起用于PowerShell。注意:我决定对查询进行硬编码,并删除错误处理以使其缩短一点。
function loadJsonFile($fileName)
{
return ConvertFrom-Json "$(Get-Content $fileName)"
}
function getLastItemFromURL($url)
{
$absPath = ([System.Uri]$url).AbsolutePath
$lastSlash = $absPath.LastIndexOf("/")
$absPath.Substring($lastSlash+1)
}
function getWorkItemId($url)
{
getLastItemFromURL($url)
}
# make sure you enabled alternative credentials and access for them
# you can get the value for YOURCODE i.e. via Fiddler
$headers = @{Authorization="Basic YOURCODE"}
# before this you would need to find the WIQL of the query; left to you
$body = @{
"query" = "THEQUERYFROMTHEJSON"
}
$bodyJson = $body | ConvertTo-Json
Invoke-RestMethod -method Post -ContentType application/json -Uri "https://{account}.visualstudio.com/defaultcollection/{project}/_apis/wit/wiql?api-version=1.0" -Headers $headers -Body $bodyJson -OutFile workitems.json
$workItemsJson = $(loadJsonFile workitems.json)
$workItems = $(foreach ($relation in $workItemsJson.workItemRelations)
{
$relation.target.url
$relation.source.url
}) | select -Unique | sort
echo "Going to download the following ids from $(getWorkItemId $workItems[0])-$(getWorkItemId $workItems[-1])"
# download the workitems
foreach($workItemUrl in $workItems)
{
$workItemId = getWorkItemId $workItemUrl
echo "Download ID: $workItemId"
$workItemUrl = "$workItemUrl`?`$expand=all"
$fileName = "workitem_$workItemId.json"
Invoke-RestMethod -ContentType application/json -Uri "$workItemUrl" -Headers $headers -OutFile "$fileName"
# download attachments
$workItemJson = $(loadJsonFile "$fileName")
foreach($relation in $workItemJson.relations)
{
if($relation.rel -eq "AttachedFile")
{
$fileUrl = $relation.url
Invoke-WebRequest $fileUrl -Headers $headers -OutFile $(getLastItemFromURL $fileUrl)
}
}
}
1
你可以使用的Team Foundation加载到Excel中描述here
相关问题
- 1. TFS团队项目收集vs团队项目
- 2. 在团队服务中创建工作项目
- 3. 自定义团队基础服务器工作项目模板
- 4. 从Visual Studio团队服务中删除团队项目
- 5. Git for Windows停止工作 - VS团队服务
- 6. 在VS 2017中创建团队项目
- 7. VS团队服务Web.config转换环境
- 8. 如何自动化团队工作备份下载
- 9. 一个团队项目,多个团队
- 10. 团队与多个团队项目
- 11. 在团队基础服务器bug工作项目中执行重复链接
- 12. VS团队服务git依赖项构建
- 13. 如何让IFRAME在VS团队服务自定义选项卡
- 14. 把MS团队建立在服务器vs工作站类机器上?
- 15. 作为一个团队在Xcode项目上工作
- 16. TFS服务团队项目的最大数量?
- 17. 如何构建团队基础服务的JavaScript测试项目
- 18. 从tfs服务器导出团队项目
- 19. 参考单独的项目总成团队服务建立
- 20. 存档团队基础服务器项目
- 21. Visual Studio团队服务和网站项目
- 22. Visual Studio团队服务的用户不能看到该项目
- 23. 团队项目规划
- 24. 团队项目太少
- 25. 合并团队项目
- 26. C#团队项目设置
- 27. 分支团队项目
- 28. Android/Java:团队项目
- 29. 重命名团队项目
- 30. 视觉工作室团队服务扩展SDK可以用于更改工作项目事件
我需要一些你可以在powershell脚本中执行的东西。理想情况下没有安装Excel。 – SACO