Invoke-WebRequest возвращает только 100 значений

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