MS Graph API 分页查询问题:如何获取更多分页数据?
解决Microsoft Graph分页获取数据问题
你的代码仅执行了单次请求,因此只能拿到第一页(1000条)数据,无法遍历后续分页。另外URI参数格式存在错误,会影响请求的正确性。以下是修正后的代码:
$DeviceList = @() # 修正URI参数错误:移除$select前多余的? $URI = "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices?`$filter=contains(OperatingSystem,'iOS')&`$select=serialNumber,Id" # 使用do-while循环,确保至少执行一次请求,直到无下一页链接 do { $GetDevices = Invoke-RestMethod -Headers $Headers -Uri $URI $DeviceList += $GetDevices.value # 匹配Graph返回的字段大小写,正确捕获下一页链接 $URI = $GetDevices.'@odata.nextLink' } while ($null -ne $URI) $DeviceList | Export-Csv C:\Users\######\Downloads\Test.csv -Force -Append
关键修改说明:
- 替换循环逻辑:把
if改为do-while循环,先执行首次请求,之后只要@odata.nextLink存在,就持续获取下一页数据,直至遍历所有分页。 - 修正URI格式:原URI中的
&?是错误写法,改为&后Graph API才能正确解析筛选和字段选择参数。 - 字段大小写匹配:Graph返回的分页链接字段为
@odata.nextLink(小写o),原代码的@Odata.nextLink(大写O)会导致无法捕获该值,修正后可正常获取分页链接。
内容的提问来源于stack exchange,提问作者EmanC
相关产品推荐
相关产品推荐

