Exportar el estado MFA de todos los usuarios de Microsoft 365 con PowerShell
En esta publicación, le mostraré cómo puede usar PowerShell para exportar un informe sobre el estado de MFA de todos los usuarios en Microsoft 365. Esto le brindará una descripción general clara. de la postura actual de la configuración de MFA de sus usuarios.
También es especialmente útil ver el estado de MFA de sus usuarios de una manera clara y concisa si planea implementar el acceso condicional en su entorno para aplicar MFA, pero no tiene una suscripción de Azure para habilitar el análisis de registros.
Las únicas otras opciones para ver el estado de MFA de sus usuarios es usar la página web de usuarios de autenticación multifactor en el centro de administración de Microsoft 365; sin embargo, esto realmente carece de funciones útiles como exportar, filtrar o identificar qué método de autenticación se está utilizando.
Además, si desea aprender cómo imponer el uso de métodos de autenticación más seguros, como impedir el uso de autenticación por SMS, consulte mi tutorial sobre cómo habilitar el requisito configuración de intensidad de autenticación en acceso condicional.
Requisitos previos
Para que se ejecute este script, debe tener acceso de administrador global a su inquilino de Microsoft 365. Esto es para garantizar que pueda leer toda la información relevante que se exportará. Si no está seguro de tener este nivel de acceso, hable con su equipo de TI o pídales que ejecuten este script en su nombre.
También debe tener instalado el módulo MSOnline PowerShell. Si no está seguro de cómo hacer esto, consulte mi publicación: Cómo solucionar el término "Connect-MsolService" no se reconoce
Exportar el estado de MFA del usuario con PowerShell
El script para exportar la información MFA de cada usuario es bastante simple. Comenzará conectándose al servicio MSOnline, donde inmediatamente verá un mensaje interactivo para que inicie sesión. Una vez que haya iniciado sesión, recopilará una lista de todas las cuentas de usuario de su inquilino y luego recorrerá cada usuario para almacenar la información de MFA. Una vez hecho esto, la información se exportará a un archivo csv en su sistema en C:\temp
Puede copiar y pegar el siguiente script en PowerShell o guardarlo como un archivo .ps1 y ejecutarlo de esa manera.
#Connect to Microsoft Online
Connect-MsolService
#Get all user accounts
Write-Host "Finding accounts..." -ForegroundColor white -BackgroundColor Black
$Users = Get-MsolUser -All | Where-Object { $_.UserType -ne "Guest" }
#create a new object
$Report = [System.Collections.Generic.List[Object]]::new()
#pause and display information
Start-Sleep 1.5
Write-Host $users.count "Accounts found" -ForegroundColor white -BackgroundColor Black
#Loop through each user, gather information on mfa status and methods and add to report
ForEach ($user in $users) {
$mfadefaultmethod = ($User.StrongAuthenticationMethods | Where-Object { $_.IsDefault -eq "True"}).methodtype
$userupn = $user.UserPrincipalName
$displayname = $user.displayname
If (($user.StrongAuthenticationRequirements.state) -eq "Enforced") {
$state = $User.StrongAuthenticationRequirements.State
}
Else {
$state = 'Disabled'
}
If ($mfadefaultmethod) {
Switch ($mfadefaultmethod) {
"OneWaySMS" { $Method = "SMS" }
"TwoWayVoiceMobile" { $Method = "Phone call" }
"PhoneAppOTP" { $Method = "Hardware token or authenticator app" }
"PhoneAppNotification" { $Method = "Authenticator app" }
}
}
Else {
$mfadefaultmethod = "Not set"
}
$ReportLine = [PSCustomObject] @{
UserPrincipalName = $User.UserPrincipalName
DisplayName = $User.DisplayName
MFAState = $State
MFADefaultMethod = $MFADefaultMethod
}
$Report.Add($ReportLine)
}
#Export report to CSV file
$Report | Export-CSV -Encoding UTF8 -NoTypeInformation "c:\temp\m365mfareport.csv"
Write-Host "Data exported to C:\temp folder" -ForegroundColor white -BackgroundColor Black