当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 导出 Office 365 用户 MFA 状态

作者:精品下载站 日期:2024-12-14 22:35:26 浏览:16 分类:玩电脑

使用 PowerShell 导出 Office 365 用户 MFA 状态


我们想要获取具有 MFA 状态的用户列表。通过检查,我们可以确定有多少用户启用了 MFA 以及他们使用了哪种方法。如果您尚未在 Microsoft 365/Azure 租户中启用 MFA,则应立即执行此操作!在本文中,您将了解如何将 Office 365 用户 MFA 状态导出到 CSV 文件。

在 Microsoft 365 管理中心检查 MFA 状态

让我们看看 Microsoft 365 并检查 MFA 用户状态。登录 Microsoft 365 管理中心。导航至用户 > 活跃用户 > 多重身份验证

[玩转系统] 使用 PowerShell 导出 Office 365 用户 MFA 状态

将打开一个新页面,其中将显示所有用户及其多重身份验证状态。 在我们的示例中,我们有几个用户启用了 MFA,并强制执行了 MFA。大多数用户都禁用了 MFA。

[玩转系统] 使用 PowerShell 导出 Office 365 用户 MFA 状态

为什么我们不建议您使用多重身份验证网页来获取信息:

  • 不显示用户是否完成了 MFA 流程

  • 它不指示用户启用了哪个 MFA 授权选项

  • 无法导出到 CSV 文件

注意:如果您看到 MFA 已启用或强制执行,并不意味着 MFA 已配置。

如果启用了条件访问,PowerShell 脚本将无法识别 MFA 状态。那是因为微软没有提供这样的方法。

有没有比 Microsoft 365 页面更好的方法来深入了解 MFA?是的,有,那就是 PowerShell 来救援的时候了。在下一步中,我们将展示如何创建 MFA 报告。

多重身份验证状态

所有用户一开始都是禁用。当您在每用户 Azure AD 多重身份验证中注册用户时,其状态将更改为“已启用”。当启用的用户登录并完成注册过程时,其状态将更改为强制。管理员可以在强制启用禁用状态之间移动用户。

  • 已禁用
    未注册每用户 Azure AD 多重身份验证的用户的默认状态。

  • 已启用
    用户已注册每用户 Azure AD 多重身份验证,但仍可以使用其密码进行旧身份验证。如果用户尚未注册 MFA 身份验证方法,他们下次使用新式身份验证(例如通过 Web 浏览器)登录时会收到注册提示。

  • 强制
    用户已按用户在 Azure AD 多重身份验证中注册。如果用户尚未注册身份验证方法,他们下次使用现代身份验证(例如通过 Web 浏览器)登录时会收到注册提示。在启用状态下完成注册的用户将自动转至强制状态。

连接到 Azure Active Directory

在我们进一步继续并获取所有用户的 MFA 状态之前,我们需要使用 PowerShell (MsolService) 安装并连接到 Azure AD。

以管理员身份启动 Windows PowerShell 并运行 cmdlet Connect-MsolService。

PS C:> Connect-MsolService

现在我们已连接,我们可以进入下一步。

准备 Get-MFAReport PowerShell 脚本

(C:)驱动器上创建两个文件夹:

  • 温度

  • 脚本

下载 Get-MFAReport.ps1 PowerShell 脚本并将其放置在 C:\scripts 文件夹中。该脚本会将 CSV 文件导出到 C:\temp 文件夹。

另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Get-MFAReport.ps1 并将其放置在 C:\scripts 文件夹中。

Write-Host "Finding Azure Active Directory Accounts..."
$Users = Get-MsolUser -All | Where-Object { $_.UserType -ne "Guest" }
$Report = [System.Collections.Generic.List[Object]]::new() # Create output file
Write-Host "Processing" $Users.Count "accounts..." 
ForEach ($User in $Users) {

    $MFADefaultMethod = ($User.StrongAuthenticationMethods | Where-Object { $_.IsDefault -eq "True" }).MethodType
    $MFAPhoneNumber = $User.StrongAuthenticationUserDetails.PhoneNumber
    $PrimarySMTP = $User.ProxyAddresses | Where-Object { $_ -clike "SMTP*" } | ForEach-Object { $_ -replace "SMTP:", "" }
    $Aliases = $User.ProxyAddresses | Where-Object { $_ -clike "smtp*" } | ForEach-Object { $_ -replace "smtp:", "" }

    If ($User.StrongAuthenticationRequirements) {
        $MFAState = $User.StrongAuthenticationRequirements.State
    }
    Else {
        $MFAState = 'Disabled'
    }

    If ($MFADefaultMethod) {
        Switch ($MFADefaultMethod) {
            "OneWaySMS" { $MFADefaultMethod = "Text code authentication phone" }
            "TwoWayVoiceMobile" { $MFADefaultMethod = "Call authentication phone" }
            "TwoWayVoiceOffice" { $MFADefaultMethod = "Call office phone" }
            "PhoneAppOTP" { $MFADefaultMethod = "Authenticator app or hardware token" }
            "PhoneAppNotification" { $MFADefaultMethod = "Microsoft authenticator app" }
        }
    }
    Else {
        $MFADefaultMethod = "Not enabled"
    }
  
    $ReportLine = [PSCustomObject] @{
        UserPrincipalName = $User.UserPrincipalName
        DisplayName       = $User.DisplayName
        MFAState          = $MFAState
        MFADefaultMethod  = $MFADefaultMethod
        MFAPhoneNumber    = $MFAPhoneNumber
        PrimarySMTP       = ($PrimarySMTP -join ',')
        Aliases           = ($Aliases -join ',')
    }
                 
    $Report.Add($ReportLine)
}

Write-Host "Report is in c:\temp\MFAUsers.csv"
$Report | Select-Object UserPrincipalName, DisplayName, MFAState, MFADefaultMethod, MFAPhoneNumber, PrimarySMTP, Aliases | Sort-Object UserPrincipalName | Out-GridView
$Report | Sort-Object UserPrincipalName | Export-CSV -Encoding UTF8 -NoTypeInformation "c:\temp\MFAUsers.csv"

这就是它的样子。

[玩转系统] 使用 PowerShell 导出 Office 365 用户 MFA 状态

运行 Get-MFAReport PowerShell 脚本

使用 PowerShell 获取所有用户的 MFA 状态。更改脚本文件夹的路径。之后,运行脚本 Get-MFAReport.ps1。

PS C:\> cd c:\scripts\
PS C:\scripts> .\Get-MFAReport.ps1

网格视图

Out-GridView 将显示包含用户的列以及比 Microsoft 365 多重身份验证页面更多的信息。

[玩转系统] 使用 PowerShell 导出 Office 365 用户 MFA 状态

打开 MFA 用户报告 CSV 文件

Get-MFAReport.ps1 PowerShell 脚本会将 Office 365 用户 MFA 状态导出到 CSV 文件。在路径 C:\temp 中找到文件 MFAUsers.csv。

[玩转系统] 使用 PowerShell 导出 Office 365 用户 MFA 状态

使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。

[玩转系统] 使用 PowerShell 导出 Office 365 用户 MFA 状态

MFA 的状态报告看起来非常好。

重要提示:不要忘记为租户中的所有用户强制执行 MFA!必须保护组织免受暴力攻击和登录。

这是否可以帮助您将 Office 365 用户 MFA 状态导出到 CSV 文件?

了解更多:Office 365 推荐配置分析器 »

结论

您了解了如何使用 PowerShell 导出 Office 365 用户的 MFA 状态。使用 Get-MFAReport PowerShell 脚本获取 MFA 状态报告并仔细查看。对所有用户强制执行 MFA 并检查他们是否使用 Authenticator 应用程序,这是 Microsoft 的建议。

您喜欢这篇文章吗?您可能还喜欢安装 Exchange Online PowerShell 模块。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯