Извлечь данные MessageTrace из O365 RestUri - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь записать информацию о доставке / сбое сообщения в O365. У меня более 250 тыс. Почтовых ящиков, и сообщение, которое я пытаюсь отследить, представляет собой глобальное электронное письмо, отправленное корневому DL с большим количеством вложенных DL. Я пробую следующий кусок.

$Root = "https://reports.office365.com/ecp/reportingwebservice/reporting.svc/" 
$Format = "`$format=JSON"
$WebService = "MessageTrace"
$Select = "`$select=RecipientAddress,Status"
$Filter = "`$filter=MessageId eq 'xxxxxxxxxxxxxxxxxxx@xxxx.xxx.xxxx.OUTLOOK.COM' and Status eq 'Failed'"

# Build report URL
$url = ($Root + $WebService + "/?" + $Select + "&" + $Filter + "&" + $Format)
$sens = $null

Do {
    $sens = Invoke-RestMethod -Credential $cred -uri $url
    $sens.d.results.Count
    $sens.d.results | select -Last 1 -ExpandProperty RecipientAddress| ft -Wrap

    if ($sens.d.__next) {
        $url = ($sens.d.__next + "&" + $Format)
    }
} While ($sens.d.__next -ne $null) 

Для примера трассировки сообщений в моем тестовом домене у меня должно быть:

  • 19 Доставлено событиеd
  • 14 Расширенные события
  • 5001 Неудачные события.

Я столкнулся с проблемой с PageSize, поскольку предел по умолчанию - 2000. Фильтр с доставкой и расширением дает мне точные результаты, поскольку он завершен на первой итерации.

Но события Failed, поскольку они должны разбиваться на 3 страницы, неправильно выбирают данные.

Если мое понимание верно, я должен увидеть 2 итерации с 2000 записями в каждой и с __next, содержащими $skiptoken=1999 и 3999 соответственно, и последнюю итерацию с 1001 записями без __next, но я продолжаю получать __next даже после 3-й итерации и $skiptoken продолжает увеличиваться в течение 10000 с.

Кажется, что цикл с теми же результатами.

2000
sens2500@contoso.local
2000
sens939@contoso.local
2000
sens1183@contoso.local
2000
sens214@contoso.local
2000
sens1183@contoso.local
2000
sens1423@contoso.local 

Я мог видеть, что записи результатов не уникальны между 1-й, 2-й и 3-й итерациями. Кажется, что он просто тянет 2000 случайных записей при каждой попытке.

Я пытался сделать [IN] с $OrderBy=RecipientAddress, чтобы увидеть, имеет ли это какое-то значение, но я не смог заставить его работать успешно.

Есть какая-нибудь помощь по этому поводу?

...