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

Azure PowerShell中Get-AzureADUser命令无法显示OtherMails属性的问题咨询

解决Azure AD PowerShell中OtherMails为空但界面能看到认证邮箱的问题

这个问题我之前帮同事排查过,核心原因其实是你混淆了两个完全不同的属性存储位置:

为什么会出现这个差异?

Azure AD界面「认证方法」页面里显示的邮箱,属于用户的认证方法资源,专门用来存储SSPR、MFA这类安全验证用的联系方式;而get-AzureADUser返回的OtherMails是用户基础对象的属性,主要用来存储用户的附加邮箱(比如个人邮箱),两者根本不是一回事。所以哪怕你是租户管理员,用get-AzureADUser也看不到认证方法里的邮箱。

正确获取SSPR认证邮箱的方法

现在微软已经逐步弃用AzureAD模块,推荐用Microsoft Graph PowerShell来获取认证方法数据,步骤如下:

  1. 安装并连接Microsoft Graph模块
# 安装模块(首次运行)
Install-Module Microsoft.Graph -Force
# 以需要的权限连接Graph(需要租户管理员权限同意)
Connect-MgGraph -Scopes UserAuthenticationMethod.Read.All
  1. 获取单个用户的认证邮箱
Get-MgUserAuthenticationEmailMethod -UserId someone@contoso.com

执行后会返回用户设置的所有认证邮箱,包括用于SSPR的那个,格式大概是:

Id                                   EmailAddress      IsDefault
--                                   ------------      ---------
3179e48a-750b-4051-897c-87b9720928f0 backup@contoso.com True
  1. 批量获取所有用户的认证邮箱(用于批量排查SSPR配置)
Get-MgUser -All $true | ForEach-Object {
    $authEmails = Get-MgUserAuthenticationEmailMethod -UserId $_.Id
    [PSCustomObject]@{
        用户名 = $_.DisplayName
        用户账号 = $_.UserPrincipalName
        SSPR认证邮箱 = $authEmails.EmailAddress -join "、"
    }
} | Export-Csv -Path "SSPR认证邮箱排查.csv" -Encoding UTF8 -NoTypeInformation

如果一定要用旧的AzureAD模块

可以安装专门的认证方法扩展模块:

Install-Module AzureADAuthenticationMethods -Force
# 获取指定用户的邮箱认证方法
Get-AzureADUserAuthenticationMethod -ObjectId someone@contoso.com | Where-Object {$_.Type -eq "Email"}

总结一下:别再盯着OtherMails属性了,它本来就不是用来存SSPR认证邮箱的,用专门的认证方法命令才能拿到你要的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:28:13