#rest #powershell #exchange-server
#rest #powershell #exchange-сервер
Вопрос:
У меня есть сценарий элементов календаря почтового ящика ресурса с использованием REST API — но я получаю эту ошибку на Exchange Server 2016 — не уверен, в чем проблема — у моей учетной записи есть роль applicationimpersonation.
Сообщение об ошибке :
Invoke-RestMethod : The remote server returned an error: (400) Bad Request.
At line:2 char:28
... $events = Invoke-RestMethod -Uri $uri -Credential $creds
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
скрипт:
$Username = 'Contosoadministrator'
$Password = 'xxxxxxx'
$SecureString = ConvertTo-SecureString -AsPlainText $Password -Force
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username,$SecureString
$mtgroom = @("meeting@contoso.com")
$strCurrentTimeZone = (Get-WmiObject win32_timezone).StandardName
$TZ = [System.TimeZoneInfo]::FindSystemTimeZoneById($strCurrentTimeZone)
$start = (get-date).ToShortDateString()
$end = (get-date).ToShortDateString()
$uri = "https://mail.contoso.com/api/v2.0/users/$mtgroom/calendar/calendarView?startDateTime=$($start)T08:00:00amp;endDateTime=$($end)T19:30:00"
$events = Invoke-RestMethod -Uri $uri -Credential $creds
Комментарии:
1. Я думаю, вам лучше использовать сортируемый формат даты и времени .
(Get-Date).ToString("s")
который возвращает текущую дату в виде2019-03-13T14:16:29
2. Я разобрался с этим, теперь у меня другая проблема, я обновил свой вопрос
3. Итак, у вас была проблема с датой, и теперь она устранена, и у вас другая? Если это вы, мы должны закрыть этот вопрос и открыть другой вместо изменения целевого объекта.
Ответ №1:
Я думаю, что это, вероятно, из-за того, как формируются ваши строки даты и времени. В моей среде я получаю «3/13/2019» при использовании (get-date).ToShortDateString()
. Это может привести к неправильной форме URL. Я могу ошибаться в зависимости от ваших настроек локализации.
Получаете ли вы лучшие результаты от get-date -Format "MM-dd-yyyy"
для ваших дат начала и окончания?
Пример из learn.microsoft.com также использует даты через дефис
GET https://outlook.office.com/api/v2.0/me/calendarview?startDateTime=2014-10-01T01:00:00amp;endDateTime=2014-10-31T23:00:00amp;$select=Subject
Комментарии:
1. Хорошо, как вы сказали, я переформатировал строки даты и времени. это работает, но у меня все еще есть проблема. Я обновил свой вопрос.