Проблема с использованием отчетов в Microsoft Graph - getOneDriveUsageAccountDetail - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь получить данные для getOneDriveUsageAccountDetail REST GET из PowerShell.Проблема в том, что по умолчанию он будет возвращать только 200 предметов, мне удалось заставить его вернуть 10000 предметов, я думаю, что это жесткий предел.Но мне нужно получить все элементы или иметь возможность запросить отчет для одного пользователя или группы пользователей.Это кажется невозможным.

Я обнаружил, что могу добавить &%24top=10000 к своему URI, чтобы получить 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
}

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Это был мой окончательный код:

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
}
0 голосов
/ 30 апреля 2019

Большинство конечных точек графика возвращают выгружаемые данные :

Некоторые запросы к Microsoft Graph возвращают несколько страниц данных либо из-за подкачки на стороне сервера, либо из-за использования параметра запроса $top, который специально ограничивает размер страницы в запросе. Когда результирующий набор занимает несколько страниц, Microsoft Graph возвращает свойство @odata.nextLink в ответе, который содержит URL-адрес следующей страницы результатов.

Чтобы получить следующую страницу, нужно следовать nextLink в результате (последняя страница - это первый результат без nextLink).

...