#powershell #microsoft-graph-api #microsoft-graph-mail
#powershell #microsoft-graph-api #microsoft-graph-mail
Вопрос:
Я работаю над некоторой автоматизацией, чтобы установить out of office для людей, использующих PowerShell. Я столкнулся с проблемой, но не уверен, где я ошибаюсь.
Когда я запускаю скрипт для отключения выхода из офиса, он выдает сообщение об ошибке с пустой полезной нагрузкой. Ожидаемый контент в формате JSON
#Setup out of office using graph
#Connect to MS Graph using seamless auth with registered application and client ID secret
# Application (client) ID, tenant Name and secret
$clientId = "xxxxxxx" #application ID
$tenantName = "xxxxxxxx"
$clientSecret = "xxxxxxxx"
$ReqTokenBody = @{
Grant_Type = "client_credentials"
Scope = "https://graph.microsoft.com/.default"
client_Id = $clientID
Client_Secret = $clientSecret
}
$TokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantName/oauth2/v2.0/token" -Method POST -Body $ReqTokenBody
#user being processed
$upn = "my.email@domain.com"
#out of office settings
$oof = @"
"@odata.context": "https://graph.microsoft.com/v1.0/users/$upn/mailboxSettings",
"automaticRepliesSetting": {
"status": "disabled"
}
"@
$oof = $oof | ConvertTo-Json
$apiUrl = "https://graph.microsoft.com/beta/users/$upn/mailboxSettings"
Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $apiUrl -UseBasicParsing -Method patch -ContentType "application/json" -Body $oof -Verbose
Это ошибка, которая генерируется
Invoke-RestMethod : {
"error": {
"code": "BadRequest",
"message": "Empty Payload. JSON content expected.",
"innerError": {
"date": "2021-01-11T14:04:16",
"request-id": "xxxx",
"client-request-id": "xxxxx"
}
}
}
At line:33 char:1
Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Ответ №1:
Попробуйте добавить скобки {}:
$oof = @"
{
"@odata.context": "https://graph.microsoft.com/v1.0/users/$upn/mailboxSettings",
"automaticRepliesSetting": {
"status": "disabled"
}
}
"@
Комментарии:
1. спасибо, но это все равно выдало ту же ошибку
2. @deniscooper Кроме того, удалите
| ConvertTo-Json
, потому что в скобках$oof
уже действительный JSON3. .. но с добавлением
@
JSONLint больше не проверяет его как json..4. спасибо, но на самом деле это все равно выдало ту же ошибку — это сработало при удалении опции convertto-json — спасибо