You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell通过Azure DevOps REST API添加带格式工作项评论?

Azure DevOps工作项评论添加格式与提及的正确做法

你遇到的问题核心是错误地对包含HTML格式标签的整个文本做了HTML编码,导致标签被转成实体字符(比如<b>变成&lt;b&gt;),自然无法被Azure DevOps解析成格式。要实现带加粗、斜体的评论,只需调整编码范围,保留合法的HTML标签,同时正确处理@提及格式。

正确实现步骤

  1. 仅编码用户输入的原始特殊字符:只对动态内容(比如$DDJ Relevant Information #@$%^&*)中的特殊字符编码,不要包裹HTML格式标签一起转义。
  2. 直接使用支持的HTML标签:Azure DevOps支持常见的HTML格式标签,比如<b>(加粗)、<i>(斜体)、<u>(下划线)、<ul>/<li>(列表)等。
  3. 正确构造@提及:Azure DevOps的@提及需要特定的HTML结构才能触发用户通知,格式为<a href="#" data-vss-mention="version:2.0,userid:用户ID">@用户名</a>;如果不知道用户ID,也可以用显示名替代(比如data-vss-mention="version:2.0,displayName:用户名")。

完整PowerShell代码示例

# 配置Azure DevOps参数
$orgName = "你的组织名"
$projName = "你的项目名"
$workItemId = "目标工作项ID"
$patToken = "你的PAT令牌" # 需要具备工作项编辑权限
$userDisplayName = "要提及的用户名"

# 动态内容:仅对这部分做HTML编码,转义特殊字符
$dynamicContent = "Here is a new file with relevant information: $DDJ Relevant Information #@$%^&*"
$encodedDynamicContent = [System.Net.WebUtility]::HtmlEncode($dynamicContent)

# 构造带格式和提及的评论内容
# 用<b>标签包裹需要加粗的部分,<i>包裹斜体,按需调整格式
$commentContent = @"
<div>
  <a href="#" data-vss-mention="version:2.0,displayName:$userDisplayName">@$userDisplayName</a>
  <p>
    这是一段普通文本,<b>$encodedDynamicContent</b> 这里是加粗内容,<i>这是斜体内容</i>
  </p>
</div>
"@

# 构造请求体
$body = @{
    text = $commentContent
} | ConvertTo-Json

# 发送REST API请求
$apiUrl = "https://dev.azure.com/$orgName/$projName/_apis/wit/workitems/$workItemId/comments?api-version=7.1-preview.3"
$headers = @{
    Authorization = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$patToken"))
}

Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $body -ContentType "application/json"

关键注意事项

  • 不要对包含HTML标签的整个评论内容做编码,仅编码用户输入的原始动态内容,避免格式标签被转义。
  • Azure DevOps仅支持基础HTML标签,不要使用复杂的CSS或JS相关标签。
  • PAT令牌需要具备工作项编辑权限,否则会返回权限错误。

内容的提问来源于stack exchange,提问作者ahi issou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:38:16