如何用PowerShell与MS Graph突破200条限制获取共享个人OneDrive全部项目
共享OneDrive子项全量获取解决方案
方法1:手动API分页循环
Get-MgShareDriveItem -ExpandProperty "children"仅返回前200条是因为Graph API对children集合的默认分页限制。直接调用Graph API并处理@odata.nextLink即可获取全部数据:
$allChildren = @() $requestUri = "https://graph.microsoft.com/v1.0/shares/$SharedEncodeURLCam/driveItem/children`$top=1000" do { $response = Invoke-MgGraphRequest -Uri $requestUri -Method Get $allChildren += $response.value $requestUri = $response.'@odata.nextLink' } while ($requestUri) # $allChildren即为所有子项集合
- 手动拼接API请求URI,通过
$top=1000将单页数据量拉满(Graph API最大支持每页1000条) - 循环判断
@odata.nextLink是否存在,直到获取完所有分页数据
方法2:专用Cmdlet自动分页
使用Get-MgSharedDriveItemChild并添加-All参数,该参数会自动处理分页逻辑:
$allChildren = Get-MgSharedDriveItemChild -SharedDriveItemId $SharedEncodeURLCam -All
-All参数会自动遍历所有分页链接,无需手动处理- 确保Microsoft Graph PowerShell模块为最新版本,旧版本可能不支持该参数,可执行
Update-Module Microsoft.Graph更新
注意事项
- 处理超大量数据时,建议添加
Start-Sleep -Seconds 1之类的延迟,避免触发API限流 - PowerShell 5.1环境下需确保模块兼容性,更新后若仍有问题可重启PowerShell再尝试
内容的提问来源于stack exchange,提问作者Erik Arndal
相关产品推荐
相关产品推荐

