如何通过PowerShell调用TFS接口获取存储查询的实际执行结果
问题原因
你当前调用的是/_apis/wit/queries路径下的TFS查询元数据接口,仅用于获取指定查询的基础配置信息(如查询ID、所属目录、查询语句规则等),不会触发查询执行逻辑,因此无法拿到实际的查询结果。
解决步骤
- 先通过现有接口拿到查询ID
- 调用TFS的WIQL(工作项查询语言)执行接口,传入查询ID触发查询运行,获取符合条件的工作项列表
- (可选)如果需要工作项的具体字段内容,可通过工作项批量查询接口拉取完整字段值
完整实现代码
# 1. 请求查询元数据,获取查询ID $TFS_query_meta_uri = "http://mytfsserver.com:8080/tfs/Company/IT Main/_apis/wit/queries/My Queries/RTB Tactical - Backlog/?api-version=2.0" $TFS_query_meta = Invoke-RestMethod -Uri $TFS_query_meta_uri -Method Get -ContentType 'application/json' -UseDefaultCredentials $query_id = $TFS_query_meta.id # 2. 调用查询执行接口,获取查询结果(工作项ID列表) $TFS_execute_query_uri = "http://mytfsserver.com:8080/tfs/Company/IT Main/_apis/wit/wiql/$query_id/?api-version=2.0" $TFS_query_result = Invoke-RestMethod -Uri $TFS_execute_query_uri -Method Get -ContentType 'application/json' -UseDefaultCredentials # 输出查询命中的工作项基础信息 $TFS_query_result.workItems
可选:批量拉取工作项完整字段
如果需要获取工作项的标题、状态、分配人等具体字段值,可追加以下代码:
# 提取所有工作项ID,拼接为批量查询参数 $workitem_ids = $TFS_query_result.workItems.id -join "," # 调用批量查询接口获取所有工作项详情 $TFS_workitem_detail_uri = "http://mytfsserver.com:8080/tfs/Company/IT Main/_apis/wit/workitems?ids=$workitem_ids&api-version=2.0" $workitem_details = Invoke-RestMethod -Uri $TFS_workitem_detail_uri -Method Get -ContentType 'application/json' -UseDefaultCredentials # 输出所有工作项的字段集合 $workitem_details.value.fields
内容的提问来源于stack exchange,提问作者GHarland
相关产品推荐
相关产品推荐

