Recherche de site Web

Exporter le statut MFA de tous les utilisateurs Microsoft 365 avec PowerShell


Dans cet article, je vais vous montrer comment utiliser PowerShell pour exporter un rapport sur l'état MFA de tous les utilisateurs dans Microsoft 365. Cela vous donnera un aperçu clair de la situation actuelle des paramètres MFA de vos utilisateurs.

Il est également particulièrement utile d’afficher le statut MFA de vos utilisateurs de manière claire et concise si vous envisagez de déployer un accès conditionnel dans votre environnement pour appliquer la MFA, mais que vous ne disposez pas d’un abonnement Azure pour activer l’analyse des journaux.

La seule autre option pour afficher le statut MFA de vos utilisateurs consiste à utiliser la page Web des utilisateurs d'authentification multifacteur dans le centre d'administration Microsoft 365. Cependant, il lui manque vraiment des fonctionnalités utiles telles que l'exportation, filtrer ou identifier la méthode d'authentification utilisée.

De plus, si vous souhaitez apprendre à imposer l'utilisation de méthodes d'authentification plus sécurisées, comme empêcher l'utilisation de l'authentification SMS, consultez mon tutoriel sur la façon d'activer l'exigence paramètre de force d’authentification dans l’accès conditionnel.

Conditions préalables

Pour que ce script s’exécute, vous devez disposer d’un accès administrateur global à votre locataire Microsoft 365. Ceci permet de garantir que vous pouvez lire toutes les informations pertinentes qui seront exportées. Si vous n'êtes pas sûr de disposer de ce niveau d'accès, parlez-en à votre équipe informatique ou demandez-lui d'exécuter ce script en votre nom.

Vous devez également avoir installé le module MSOnline PowerShell. Si vous ne savez pas comment procéder, consultez mon article : Comment corriger le terme « Connect-MsolService » n'est pas reconnu

Exporter le statut MFA de l'utilisateur avec PowerShell

Le script pour exporter les informations MFA de chaque utilisateur est assez simple. Cela commencera par vous connecter au service MSOnline où vous verrez immédiatement une invite interactive à laquelle vous pourrez vous connecter. Une fois connecté, il rassemblera une liste de tous les comptes d'utilisateurs de votre locataire, puis parcourra chaque utilisateur pour stocker les informations MFA. Une fois cela fait, les informations seront exportées vers un fichier csv sur votre système à C:\temp

Vous pouvez soit copier et coller le script ci-dessous dans PowerShell, soit l'enregistrer en tant que fichier .ps1 et l'exécuter de cette façon.

#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

Articles connexes