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

修正获取Microsoft 365用户MFA状态的PowerShell脚本问题

修正后的Microsoft 365用户MFA状态报表脚本

原脚本的问题在于错误地将仅配置了MFA验证方法但未启用MFA要求的用户标记为Enabled状态。实际上,StrongAuthenticationRequirements属性才是控制MFA是否启用/强制的核心依据,而StrongAuthenticationMethods仅代表用户添加了验证方法,不代表MFA已被启用。

以下是修正后的脚本,可准确返回Disabled、Enabled、Enforced三种状态:

Get-MsolUser -All | Select-Object DisplayName, UserPrincipalName, @{
    Name = 'MFA Status'; 
    Expression = {
        # 优先判断MFA要求的状态
        if ($_.StrongAuthenticationRequirements.Count -gt 0) {
            $state = $_.StrongAuthenticationRequirements[0].State
            if ($state -eq "Enforced") {
                "Enforced"
            } elseif ($state -eq "Enabled") {
                "Enabled"
            } else {
                "Disabled"
            }
        } else {
            # 无MFA要求配置,无论是否有验证方法,均为Disabled
            "Disabled"
        }
    }
} | Export-Csv "D:\MFAStatus.csv" -NoTypeInformation

状态判断逻辑说明:

  • Enforced:用户已配置MFA强制要求,必须使用MFA进行登录
  • Enabled:用户已启用MFA要求,但尚未完成首次MFA验证(或处于启用但未强制的状态)
  • Disabled:用户未配置任何MFA启用/强制要求,即使添加了验证方法,MFA仍处于禁用状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:09:51