Я пытаюсь получить данные для getOneDriveUsageAccountDetail REST GET из PowerShell.Проблема в том, что по умолчанию он будет возвращать только 200 предметов, мне удалось заставить его вернуть 10000 предметов, я думаю, что это жесткий предел.Но мне нужно получить все элементы или иметь возможность запросить отчет для одного пользователя или группы пользователей.Это кажется невозможным.
Я обнаружил, что могу добавить &%24top=10000 к своему URI, чтобы получить 10000 результатов.
&%24top=10000
https://docs.microsoft.com/en-us/graph/api/reportroot-getonedriveusageaccountdetail?view=graph-rest-1.0
Толькопараметры период и дата.
У меня есть функция Initialize-Authorization для создания $ script: APIHeader для хранения токена доступа.Это отлично работает.
Это функция, которую я использую для генерации отчета.
Function Get-GraphOneDriveUsageAccountDetail { $result = (Invoke-RestMethod ` -Method get ` -Uri "https://graph.microsoft.com/beta/reports/getOneDriveUsageAccountDetail(period='D180')?%24format=application%2Fjson&%24top=10000" ` -ContentType 'application/json' ` -Headers $script:APIHeader ` -ErrorAction Stop).value return $result }
Это был мой окончательный код:
Function Get-GraphOneDriveUsageAccountDetail { $AccountDetail = Invoke-RestMethod ` -Method get ` -Uri "https://graph.microsoft.com/beta/reports/getOneDriveUsageAccountDetail(period='D180')?%24format=application%2Fjson&%24top=10000" ` -ContentType 'application/json' ` -Headers $script:APIHeader ` -ErrorAction Stop $result = $AccountDetail.value While($AccountDetail.'@odata.nextLink') { Write-Verbose "Next Link $($AccountDetail.'@odata.nextLink')" -Verbose $AccountDetail = Invoke-RestMethod ` -Method get ` -Uri $AccountDetail.'@odata.nextLink' ` -ContentType 'application/json' ` -Headers $script:APIHeader ` -ErrorAction Stop $result += $AccountDetail.value } return $result }
Большинство конечных точек графика возвращают выгружаемые данные :
Некоторые запросы к Microsoft Graph возвращают несколько страниц данных либо из-за подкачки на стороне сервера, либо из-за использования параметра запроса $top, который специально ограничивает размер страницы в запросе. Когда результирующий набор занимает несколько страниц, Microsoft Graph возвращает свойство @odata.nextLink в ответе, который содержит URL-адрес следующей страницы результатов.
$top
@odata.nextLink
Чтобы получить следующую страницу, нужно следовать nextLink в результате (последняя страница - это первый результат без nextLink).
nextLink