You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PowerShell 7发送Teams通用入站Webhook时报错:Bad payload received by generic incoming webhook

PowerShell 7发送Teams通用入站Webhook时报错:Bad payload received by generic incoming webhook

嗨,我来帮你排查这个问题~

你遇到的核心问题在于变量$body里的JSON字符串多了一层不必要的单引号。仔细看你定义$body的代码:

$body = "`'{`"text`":`"mailbody`"}`'"

这样定义后,$body实际存储的内容是'{"text":"mailbody"}'(外层包裹了单引号),而Teams通用入站Webhook只接受纯JSON格式的 payload,外层的单引号会被识别为无效格式,所以才抛出“Bad payload received”的错误。而你直接写'{"text":"mailbody"}'的时候,PowerShell会把单引号当作字符串的边界,实际发送的是没有外层单引号的纯JSON内容,自然就能成功。

这里给你两种解决办法:

方法一:直接定义正确的JSON字符串

去掉外层的转义单引号,直接赋值纯JSON:

$body = '{"text":"mailbody"}'
# 验证输出应该是 {"text":"mailbody"}
$body
# 再调用接口
Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body $body -Uri $mychat

方法二:用ConvertTo-Json生成规范JSON(推荐)

手动拼接JSON很容易出现转义错误,更稳妥的方式是先构建PowerShell哈希表,再转换为JSON:

# 先定义payload的结构
$payload = @{
    text = "mailbody"
}
# 转换为标准JSON格式
$body = $payload | ConvertTo-Json
# 调用接口
Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body $body -Uri $mychat

这种方式不仅能避免手动转义的麻烦,当你需要添加更多字段(比如富文本、附件等)时,也能保证JSON格式的正确性。

备注:内容来源于stack exchange,提问作者Chris9834

火山引擎 最新活动