【发布时间】:2020-09-04 00:05:37
【问题描述】:
我正在尝试通过 powershell 在 Office 365 组的日历中创建一个事件。
这是我第一次做这种编程的经历,如果我的问题很基本,很抱歉:-)
首先,我创建了一个简单的 json 文件(calendar.json)
{
"start":
{
"dateTime":"2017-03-12T17:00:00.0000000",
"timeZone":"UTC"
},
"end":
{
"dateTime":"2017-03-12T17:30:00.0000000",
"timeZone":"UTC"
},
"responseStatus": {
"response": "None"
},
"iCalUId": "null",
"isReminderOn": false,
"subject": "Test Event created from API"
}
然后我通过以下步骤创建事件:
使用经过测试的 powershell 函数给我令牌 使用此代码添加标题:
$headers = @{}
$headers.Add('Authorization','Bearer ' + $token.AccessToken)
$headers.Add('Content-Type',"application/json")
因为我现在开始,我将json文件转换为一个对象,然后将对象转换为json(我知道,这很愚蠢,但我这样做是因为我不知道json以及如何无错误地转换在 powershell 代码中)
$json = ConvertFrom-Json -InputObject (Gc 'C:\Users\mmangiante\OneDrive - Interactive Media S.p.A\Office 365\calendar.json'-Raw)
$body = ConvertTo-Json $json
调用 Invoke-RestMethod
response = Invoke-RestMethod 'https://graph.microsoft.com/v1.0/groups/768afb0c-bafd-4272-b855-6b317a3a9953/calendar/events' -Method Post -Headers $headers -Body $json
返回的是 400 错误请求。
和Sending Microsoft Graph request events returns 400一样的错误
鉴于对该问题的回答,我修改了代码以返回错误:
try{$restp=Invoke-RestMethod 'https://graph.microsoft.com/v1.0/groups/768afb0c-bafd-4272-b855-6b317a3a9953/calendar/events' -Method Post -Headers $headers -Body $json
} catch {$err=$_}
$err
就像How do I get the body of a web request that returned 400 Bad Request from Invoke-RestMethod 中的建议一样,但我没有发现任何感兴趣的东西。 我发现的唯一一件事是,在撰写本文时,Invoke-RestMethod 没有像 https://github.com/PowerShell/PowerShell/issues/2193 中那样返回完整的响应
我想我的 json 不是“格式正确”,但我不知道为什么。
有人有什么建议吗?
【问题讨论】:
标签: powershell office365 microsoft-graph-api