Powershell 发送至 Teams:通用传入 webhook 收到错误负载

Powershell 发送至 Teams:通用传入 webhook 收到错误负载

我尝试从 Powershell 7(在 Windows 上)内部发送到 Teams Webhook。

如果我发送格式化的字符串,它会起作用。如果我通过变量发送相同的字符串,它会停止。有什么想法吗?

PS Microsoft.PowerShell.Core\FileSystem::\AD>  $body = "`'{`"text`":`"mailbody`"}`'" 
PS Microsoft.PowerShell.Core\FileSystem::\AD> $boDY
'{"text":"mailbody"}'
PS Microsoft.PowerShell.Core\FileSystem::\AD> Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body $body -Uri $mychat
Invoke-RestMethod: Bad payload received by generic incoming webhook.
PS Microsoft.PowerShell.Core\FileSystem::\AD> Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body '{"text":"mailbody"}' -Uri $mychat
1

答案1

好吧,有时候,“stehe ich auf dem Schlauch” :-(

好的,解决方案很简单。如果您通过变量提供文本,则不需要定义字符串的开始和结束。只需通过变量传递字符串本身即可。

PS Microsoft.PowerShell.Core\FileSystem::\AD>  $body = "{`"text`":`"mailbody`"}"
PS Microsoft.PowerShell.Core\FileSystem::\AD> $body
{"text":"mailbody"}
PS Microsoft.PowerShell.Core\FileSystem::\AD> Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body $body -Uri $mychat
1

答案2

您应该创建一个 splatting 操作来保存您的变量。

$body = @{
    text = "mailbody"
}
Invoke-RestMethod -Method Post -ContentType 'Application/Json' -Body ($body|ConvertTo-Json) -Uri $mychat

相关内容