Я пытаюсь записать информацию о доставке / сбое сообщения в 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
, чтобы увидеть, имеет ли это какое-то значение, но я не смог заставить его работать успешно.
Есть какая-нибудь помощь по этому поводу?