我尝试从 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