Azure PowerShell中Get-AzureADUser命令无法显示OtherMails属性的问题咨询
解决Azure AD PowerShell中
OtherMails为空但界面能看到认证邮箱的问题 这个问题我之前帮同事排查过,核心原因其实是你混淆了两个完全不同的属性存储位置:
为什么会出现这个差异?
Azure AD界面「认证方法」页面里显示的邮箱,属于用户的认证方法资源,专门用来存储SSPR、MFA这类安全验证用的联系方式;而get-AzureADUser返回的OtherMails是用户基础对象的属性,主要用来存储用户的附加邮箱(比如个人邮箱),两者根本不是一回事。所以哪怕你是租户管理员,用get-AzureADUser也看不到认证方法里的邮箱。
正确获取SSPR认证邮箱的方法
现在微软已经逐步弃用AzureAD模块,推荐用Microsoft Graph PowerShell来获取认证方法数据,步骤如下:
- 安装并连接Microsoft Graph模块
# 安装模块(首次运行) Install-Module Microsoft.Graph -Force # 以需要的权限连接Graph(需要租户管理员权限同意) Connect-MgGraph -Scopes UserAuthenticationMethod.Read.All
- 获取单个用户的认证邮箱
Get-MgUserAuthenticationEmailMethod -UserId someone@contoso.com
执行后会返回用户设置的所有认证邮箱,包括用于SSPR的那个,格式大概是:
Id EmailAddress IsDefault -- ------------ --------- 3179e48a-750b-4051-897c-87b9720928f0 backup@contoso.com True
- 批量获取所有用户的认证邮箱(用于批量排查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
相关产品推荐
相关产品推荐

