#powershell #microsoft-graph-api #invoke-webrequest
#powershell #microsoft-graph-api #invoke-веб-запрос
Вопрос:
Я запускаю этот код и возвращаю только первые 100 записей, не знаю почему.
Не могли бы вы посоветовать?
Я верю, что это то, что я должен изменить, но не знаю как:
$select=displayName,userPrincipalName,signInActivity
Это полный код:
Invoke-WebRequest -Headers $AuthHeader1 -Uri "https://graph.microsoft.com/beta/users?`$select=displayName,userPrincipalName,signInActivity" -UseBasicParsing
Обновить:
$LastLogin = Invoke-WebRequest -Headers $AuthHeader1 -Uri "https://graph.microsoft.com/beta/users?`$top=999amp;$select=displayName,userPrincipalName,signInActivityamp;$skiptoken=Paged=TRUEamp;$odata.nextlink" -UseBasicParsing
$NextLink = $LastLogin."@odata.nextLink"
$LastLoginpage2 = Invoke-WebRequest -Method Get -Headers $AuthHeader1 -Uri '$NextLink' -UseBasicParsing
Спасибо.
Габор
Ответ №1:
По умолчанию каждый API имеет свой собственный лимит на страницу, чтобы выдавать количество записей в качестве ответа. Здесь /users
он выдает 100 пользователей на страницу и, кроме того, дает @odata.nextLink в качестве ссылки на следующую страницу, как показано ниже на изображении.
Вы можете использовать odata.nextLink и выполнить еще один вызов и получить следующую страницу пользователей.
Если вы хотите изменить ограничение на страницу, вы можете использовать параметр запроса $top, чтобы получить 200 или 300 пользовательских объектов на страницу. Используйте приведенный ниже запрос, чтобы получить 200 записей на страницу.
GET https://graph.microsoft.com/v1.0/users?$top=200amp;$select=displayName,userPrincipalName,signInActivity
Комментарии:
1. Спасибо, теперь я столкнулся с проблемой, что только 1000 пользователей, которых я могу запросить в одном запросе.
2. Есть какие-либо советы о том, как запросить все в одном запросе?
3. Да, API работает так, как указано в нумерации страниц. Таким образом, вы можете указать ограничения на страницу (максимум, вы получите 999), затем используйте odata.nextlink, сделайте еще один вызов, чтобы получить следующую страницу пользователей.
4. Я использую это: $LastLogin = Invoke-WebRequest -Headers $AuthHeader1 -Uri » graph.microsoft.com/beta/users ?`$top=999amp;$select=displayName,userPrincipalName,signInActivityamp;$skiptoken=Paged=TRUEamp;$odata.nextlink » -Используйте базовый синтаксический анализ $nextLink = $LastLogin.»@odata.nextLink»$LastLoginpage2 = Invoke-WebRequest -Метод Get -Заголовки $AuthHeader1 -Uri ‘$nextLink’ -UseBasicParsing
5. похоже, когда я пытаюсь получить следующую ссылку, переменная пуста. Я также добавляю этот код сверху, чтобы вы могли лучше видеть