You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph PowerShell SDK增量查询缺失@odata.deltaLink/nextLink

问题描述

我正在使用Microsoft Graph delta查询用户对象以跟踪其变更。当直接使用HTTP请求(如通过Postman或Invoke-RestMethod)时,能得到包含@odata.deltaLink和/或@odata.nextLink的预期响应,示例如下:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
  "value": [
    {
      "id": "some-user-id",
      "displayName": "John Doe"
    }
  ],
  "@odata.deltaLink": "https://graph.microsoft.com/v1.0/users/delta?$deltatoken=abc123"
}

但使用Microsoft Graph PowerShell SDK(例如Get-MgUserDelta)执行相同增量查询时,返回的响应中缺失@odata.deltaLink和@odata.nextLink。请问如何在该SDK中获取这两个链接?


解决方法

方法1:指定输出类型获取完整响应

Microsoft Graph PowerShell SDK默认仅返回用户对象数组,要拿到包含@odata.deltaLink和@odata.nextLink的完整响应结构,需添加-OutputType PSObject参数:

$fullResponse = Get-MgUserDelta -OutputType PSObject

之后直接访问对应属性即可获取链接:

# 获取deltaLink
$deltaLink = $fullResponse.'@odata.deltaLink'
# 获取nextLink(若存在分页)
$nextLink = $fullResponse.'@odata.nextLink'

如果需要遍历所有分页结果,使用-All参数自动处理nextLink,同时结合-OutputType PSObject即可在完成分页后拿到最终的deltaLink:

$allDeltaResults = Get-MgUserDelta -All -OutputType PSObject
$finalDeltaLink = $allDeltaResults.'@odata.deltaLink'

方法3:直接调用Graph API端点

若SDK封装限制了响应内容,可使用Invoke-MgGraphRequest发送原始请求,获取与HTTP请求完全一致的响应:

$apiResponse = Invoke-MgGraphRequest -Method Get -Uri "https://graph.microsoft.com/v1.0/users/delta"
$deltaLink = $apiResponse.'@odata.deltaLink'
$nextLink = $apiResponse.'@odata.nextLink'

内容的提问来源于stack exchange,提问作者Deepanshu Saini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:58:19