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

PowerShell中如何向Microsoft Teams发送变量内容

解决PowerShell向Teams发送变量内容的问题

你遇到的核心问题是没有正确构建符合Teams Webhook要求的JSON payload,同时对PowerShell的字符串解析规则理解有误。咱们一步步拆解问题,再给出可靠的解决方案:

为什么你的尝试失败了?

  • 第一种方式用了单引号包裹JSON:PowerShell中单引号字符串不会解析变量,所以'{"text":"Write-Output $cmdOutput"}'会被原封不动当作文本发送,自然不会输出变量内容。
  • 第二种和第三种直接传递变量或命令:Teams的Webhook要求接收的是{"text": "你的内容"}格式的JSON对象,而你直接传变量值或者命令,完全不符合JSON结构,所以会触发Bad payload错误。

正确的实现方式

方法1:手动构建解析变量的JSON字符串

如果变量内容比较简单,可以用双引号包裹JSON,同时转义内部的双引号(用反引号`)让PowerShell正确解析变量:

# 先定义你的变量
$cmdOutput = "Hello from PowerShell variable!"

# 构建JSON并发送
Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body "{`"text`":`"$cmdOutput`"}" -Uri <YOUR WEBHOOK URL>

这里双引号让PowerShell解析$cmdOutput,反引号转义内部的双引号,保证JSON格式合法。

方法2:用ConvertTo-Json自动生成合法JSON(推荐)

如果变量内容包含特殊字符、换行或者复杂格式,手动转义容易出错,推荐用哈希表+ConvertTo-Json的方式,PowerShell会自动处理所有转义:

# 定义变量(比如包含换行的内容)
$cmdOutput = @"
这是多行内容
第一行
第二行
"@

# 构建payload哈希表,转成JSON
$payload = @{
    text = $cmdOutput
} | ConvertTo-Json

# 发送请求
Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body $payload -Uri <YOUR WEBHOOK URL>

这种方式不仅能正确解析变量,还能自动处理JSON格式要求的转义,比如变量里的双引号、换行符都会被转成JSON认可的格式,避免Payload错误。

额外注意点

  • 如果想发送Markdown格式的内容,直接在变量里写Markdown语法即可,Teams支持大部分常用的Markdown(比如加粗**文本**、换行、列表等)。
  • 确保你的Webhook URL是正确的,从Teams频道的连接器中获取的有效URL。

内容的提问来源于stack exchange,提问作者Cody Brown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:57:36