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

在本地设备获取Intune/AAD组成员身份的PowerShell方法咨询

可以通过PowerShell从本地令牌枚举AAD/Intune组成员身份(无需调用目录服务)

是的,完全可以实现。本地缓存的AAD用户令牌(JWT格式)中已经包含了用户所属的AAD组声明,你可以通过解析令牌的Payload部分来提取这些组信息,全程不需要调用AAD目录服务API。

具体操作步骤如下:

1. 获取本地缓存的AAD访问令牌

首先确保你已经通过PowerShell登录过AAD(比如使用Connect-MgGraph或Connect-AzureAD),登录后令牌会缓存到本地。你可以通过以下命令获取当前上下文的访问令牌:

# 使用Microsoft Graph模块获取令牌
$token = (Get-MgContext).AccessToken

# 或者使用AzureAD模块(若已安装)
# $token = (Get-AzureADCurrentSessionInfo).AccessToken

2. 解析JWT令牌的Payload部分

JWT令牌由三部分(Header、Payload、Signature)用.分隔,我们需要解码中间的Payload部分来提取组信息:

# 拆分令牌,提取Payload的Base64编码部分
$payloadBase64 = $token.Split('.')[1]

# 补全JWT可能省略的Base64填充字符
$payloadBase64 = $payloadBase64.PadRight($payloadBase64.Length + (4 - $payloadBase64.Length % 4) % 4, '=')

# 解码为UTF-8格式的JSON字符串
$payloadJson = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($payloadBase64))

# 转换为PowerShell可操作的对象
$payload = $payloadJson | ConvertFrom-Json

3. 提取组身份信息

Payload中的groups字段存储了用户所属AAD组的ID列表,你可以直接输出这些信息:

# 输出用户所属的AAD组ID
Write-Host "用户关联的AAD组ID:"
$payload.groups

额外说明

  • 令牌默认仅包含用户直接/间接所属的安全组和邮件启用的安全组,分发组不会出现在声明中(除非在AAD租户中专门配置了包含分发组)。
  • 如果用户所属组数量超过AAD令牌的默认声明限制(200个),令牌中会返回_claim_names字段,提示需要通过增量查询获取完整组列表——这种场景下必须调用AAD API,但组数量在限制内时,完全可以本地解析完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:06:02