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

无Microsoft Graph权限时,如何通过PowerShell判断用户的自助密码重置(SSPR)可用能力?

无Microsoft Graph权限时,如何通过PowerShell判断用户的自助密码重置(SSPR)可用能力?

我完全理解你的困境——MSOnline不仅已被弃用,30天记录的限制也完全满足不了需求,而Graph权限又拿不到,确实头疼。不过你可以试试下面这几个替代方案,应该能帮你判断用户的SSPR可用状态:


1. 使用Azure AD PowerShell模块读取用户扩展属性

虽然Azure AD模块也在逐步向Graph过渡,但目前它依然可用,而且所需的Directory Readers角色权限往往比Graph的全权限更容易申请到。你可以通过用户的扩展属性直接获取SSPR启用状态:

首先确保模块已安装并导入:

if (-not (Get-Module -ListAvailable -Name AzureAD)) {
    Install-Module -Name AzureAD -Force -AllowClobber
}
Import-Module AzureAD

连接到Azure AD后,就能查询用户的SSPR状态了:

Connect-AzureAD

# 查询单个用户
$user = Get-AzureADUser -Filter "UserPrincipalName eq 'user@yourdomain.com'"
$ssprEnabled = $user.ExtensionProperty["microsoft.graph.azureADUser.isSsprEnabled"]
Write-Host "SSPR启用状态: $ssprEnabled"

这个字段直接返回True或False,能准确判断用户是否被允许使用SSPR。


2. 检查用户的SSPR注册完成状态

就算SSPR已启用,用户如果没完成手机号/邮箱等验证方法的注册,还是无法使用。你可以用Get-AzureADUserRegistrationDetails命令获取注册详情:

$regDetails = Get-AzureADUserRegistrationDetails -ObjectId $user.ObjectId
Write-Host "是否完成SSPR注册: $($regDetails.isRegistered)"
Write-Host "是否有可用的验证方法: $($regDetails.hasValidAuthenticationMethods)"

结合这两个状态,就能判断用户实际能不能使用SSPR,而不只是看功能是否启用。


3. 混合环境下的本地AD辅助判断(如果适用)

如果你的环境是Azure AD和本地AD混合同步,有些场景下可以通过本地AD属性辅助验证:

  • 检查用户是否在允许SSPR的安全组中(如果你的SSPR是按组配置的)
  • 查看msDS-CloudExtensionAttribute等同步属性,部分情况下会同步SSPR相关标记(不过这个取决于你的AD Connect配置,不一定通用)

批量处理示例脚本

如果你需要批量生成用户SSPR状态报告,可以用这个脚本:

Connect-AzureAD

$reportPath = ".\SSPR_User_Status_Report.csv"
# 初始化CSV文件
[PSCustomObject]@{
    UserPrincipalName = "示例用户"
    SSPR_Enabled      = $false
    SSPR_Registered   = $false
    Has_Valid_Methods = $false
} | Export-Csv -Path $reportPath -NoTypeInformation

# 获取所有用户并循环处理
$allUsers = Get-AzureADUser -All $true
foreach ($user in $allUsers) {
    try {
        $regDetails = Get-AzureADUserRegistrationDetails -ObjectId $user.ObjectId
        [PSCustomObject]@{
            UserPrincipalName = $user.UserPrincipalName
            SSPR_Enabled      = $user.ExtensionProperty["microsoft.graph.azureADUser.isSsprEnabled"]
            SSPR_Registered   = $regDetails.isRegistered
            Has_Valid_Methods = $regDetails.hasValidAuthenticationMethods
        } | Export-Csv -Path $reportPath -Append -NoTypeInformation
    }
    catch {
        Write-Warning "处理用户 $($user.UserPrincipalName) 时出错: $_"
    }
}

Write-Host "报告已生成到: $reportPath"

最后提醒

如果连Azure AD模块的权限都没有,那可能只能联系你的Azure AD管理员,要么申请Directory Readers权限,要么让管理员帮你导出包含SSPR状态的用户列表——毕竟这些属于用户的敏感配置信息,没有权限确实无法读取。

备注:内容来源于stack exchange,提问作者user66001

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:00:30