0

我正在尝试使用 powershell 向 O365 'Incoming Webhook' 发布一条简单的消息。这是代码:

$url = 'https://outlook.office365.com/webhook/.......'

$body = @"
{
    "text": "Hello World!"
    "title": "Today"
}
"@

Invoke-RestMethod -Uri $url -Method Post -Body $body -ContentType "application/json"

但是得到这个错误:

PSMessageDetails      : 
Exception             : System.Net.WebException: The remote server returned an error: (404) Not Found.
                           at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse(WebRequest request)
                           at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()
TargetObject          : System.Net.HttpWebRequest
CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
ErrorDetails          : Invalid webhook request
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 10
PipelineIterationInfo : {}

如果我省略-Contentype参数,我会收到此错误:

Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: AADSTS90002: Requested tenant identifier '00000000-0000-0000-0000-000000000000' is not valid. Tenant identifiers may not be an empty GUID.
Trace ID: c4b77459-3915-475e-8125-fa2db9fd11e8
Correlation ID: 0ba64202-db52-4a96-8f44-a87b7f009170
Timestamp: 2016-03-27 07:48:02Z

有人知道如何让它工作吗?

4

2 回答 2

1

谢谢你的指导。我试图测试一个 Azure WebHook。它适用于网页的测试方法;甚至将 JSON 正文从页面复制到 powershell,但它不起作用。关键显然是指定

-ContentType "application/json"

但是,我发现有趣的是,Teams 中的 WebHooks确实使用默认内容类型(即“application/x-www-form-urlencoded”)作为 Stefan Stranger 发布的示例帖子:

使用 WebHooks Connect 将数据从 PowerShell 发送到 Microsoft Teams

对他们来说不错的快捷方式,但最好总是为 WebHooks 指定内容类型以确保安全。

于 2017-03-09T19:02:20.423 回答
0

由于“文本”字段后缺少逗号,您的消息正文不是有效的 json 片段。

变成

$body = @"
{
    "text": "Hello World!",
    "title": "Today"
}
"@

它对我有用。

于 2016-03-28T23:55:34.397 回答