TFS (Team Foundation Server) API是微软提供的用于与Azure DevOps或本地TFS服务器交互的REST API。通过PowerShell调用这些API可以自动化工作项管理任务。
首先需要安装必要的PowerShell模块并获取访问凭证:
# 安装Azure DevOps模块(可选)
Install-Module -Name VSTeam -Scope CurrentUser -Force
# 或者直接使用Invoke-RestMethod调用REST API
$pat = "你的个人访问令牌(PAT)"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((":{0}" -f $pat)))
$headers = @{
Authorization = "Basic $base64AuthInfo"
"Content-Type" = "application/json"
}
# 连接到Azure DevOps/TFS
$url = "https://dev.azure.com/你的组织名称"
$projectName = "你的项目名称"
Connect-VSTeamAccount -Url $url -PersonalAccessToken $pat
# 获取项目中的所有工作项
$workItems = Get-VSTeamWorkItem -ProjectName $projectName -ErrorAction Stop
$workItems | Format-Table Id, Title, WorkItemType, State -AutoSize
$org = "你的组织名称"
$project = "你的项目名称"
$apiVersion = "api-version=6.0"
# 获取项目ID
$projectUrl = "https://dev.azure.com/$org/_apis/projects/$project`?$apiVersion"
$projectInfo = Invoke-RestMethod -Uri $projectUrl -Headers $headers -Method Get
$projectId = $projectInfo.id
# 获取工作项查询
$wiqlQuery = @{
query = "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.TeamProject] = '$project' ORDER BY [System.Id]"
} | ConvertTo-Json
$wiqlUrl = "https://dev.azure.com/$org/$project/_apis/wit/wiql`?$apiVersion"
$queryResult = Invoke-RestMethod -Uri $wiqlUrl -Headers $headers -Method Post -Body $wiqlQuery
# 获取工作项详细信息
$workItemIds = $queryResult.workItems.id -join ","
$workItemsUrl = "https://dev.azure.com/$org/_apis/wit/workitems`?ids=$workItemIds&$apiVersion"
$workItems = Invoke-RestMethod -Uri $workItemsUrl -Headers $headers -Method Get
# 输出结果
$workItems.value | Select-Object id, fields | Format-Table -AutoSize
# 使用WIQL查询特定类型的工作项
$wiqlQuery = @{
query = "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.TeamProject] = '$project' AND [System.WorkItemType] = 'Bug' ORDER BY [System.Id]"
} | ConvertTo-Json
$queryResult = Invoke-RestMethod -Uri $wiqlUrl -Headers $headers -Method Post -Body $wiqlQuery
原因:PAT令牌无效或过期,或者没有足够的权限
解决:
原因:项目名称错误或WIQL查询条件太严格
解决:
Get-VSTeamProject
验证可访问的项目列表原因:查询返回大量工作项
解决:
$workItemId = 12345
$workItemUrl = "https://dev.azure.com/$org/_apis/wit/workitems/$workItemId`?$apiVersion"
$workItem = Invoke-RestMethod -Uri $workItemUrl -Headers $headers -Method Get
$workItem.fields
$createBody = @(
@{
op = "add"
path = "/fields/System.Title"
value = "新工作项标题"
}
) | ConvertTo-Json
$createUrl = "https://dev.azure.com/$org/$project/_apis/wit/workitems/`$Task`?$apiVersion"
Invoke-RestMethod -Uri $createUrl -Headers $headers -Method Post -Body $createBody
通过以上方法,你可以灵活地使用PowerShell和TFS API来管理和查询工作项。
没有搜到相关的沙龙