15/11/2024

Office 365PowerShell

Office 365 : obtenir le statut du MFA avec PowerShell

I. Présentation

Dans ce tutoriel, nous allons apprendre à obtenir le statut du MFA (authentification forte) sur les comptes utilisateurs Office 365 avec PowerShell.

Précédemment, nous avons vu comment mettre en place le MFA sur Office 365 et comment l'activer sur les utilisateurs à partir de l'interface graphique.

Pour obtenir le statut du MFA sur les utilisateurs, c'est-à-dire pour savoir s'il est actif ou non et visualiser le second facteur actif, nous allons utiliser le module MSOnline. Même si ce module est plutôt en fin de vie, il reste d'actualité pour manipuler le MFA dans le sens où le module Microsoft Graph ne permet pas, à ce jour, de gérer le MFA. Enfin, en tout cas je n'ai pas trouvé la solution de mon côté...

II. Obtenir le statut du MFA avec PowerShell

Ouvrez une console Windows PowerShell et exécutez la commande ci-dessous pour établir une connexion à Office 365 (le module MSOnline doit être présent sur votre machine).

Connect-MsolService

Une fenêtre va s'ouvrir, authentifiez-vous. Pour obtenir le statut du MFA pour un utilisateur, il faut regarder la propriété "StrongAuthenticationMethods" de son compte via la commande Get-MsolUser.

On va commencer par stocker les informations dans une variable, en spécifiant l'identifiant de l'utilisateur :

$User = Get-MSolUser -UserPrincipalName [email protected]

Puis, nous allons pouvoir afficher l'état du MFA sur ce compte :

$User.StrongAuthenticationMethods

Si la commande ci-dessus ne retourne aucun résultat, c'est que le MFA est désactivé sur cet utilisateur ou qu'il est activé mais pas encore configuré (aucun second facteur actif).

Dans le cas où le MFA est actif et configuré, la liste des méthodes disponibles pour le second facteur s'affiche. La méthode par défaut est visible via la propriété "IsDefault" qui prend la valeur "True".

Exemple - Office 365 : StrongAuthenticationMethods
Exemple - Office 365 : StrongAuthenticationMethods

Sur l'image ci-dessus, on peut voir que le MFA est actif et configuré pour cet utilisateur et que le second facteur par défaut est "OneWaySMS", c'est-à-dire un code unique envoyé par SMS.

Pour éviter de le faire en deux temps, on peut sélectionner le nom d'affichage de l'utilisateur, son identifiant et créer une propriété calculée avec PowerShell, nommée MFAStatus, pour afficher directement le second facteur par défaut. Dans le cas où le MFA est désactivé sur l'utilisateur, on précisera "Disabled". Voici la commande complète :

Get-MsolUser -UserPrincipalName [email protected] | Select DisplayName,UserPrincipalName,@{N="MFAStatus"; E={ if( $_.StrongAuthenticationMethods.IsDefault -eq $true) {($_.StrongAuthenticationMethods | Where IsDefault -eq $True).MethodType} else { "Disabled"}}}

Dans le même esprit, on peut obtenir le statut du MFA pour tous les utilisateurs du tenant. Pour cela, il suffit de retirer le paramètre "-UserPrincipalName" de la commande Get-MsolUser et de préciser "-All" à la place.

Ce qui donne :

Get-MsolUser -All | Select DisplayName,UserPrincipalName,@{N="MFAStatus"; E={ if( $_.StrongAuthenticationMethods.IsDefault -eq $true) {($_.StrongAuthenticationMethods | Where IsDefault -eq $True).MethodType} else { "Disabled"}}}

Voici le résultat obtenu :

La méthode "PhoneAppNotification" visible sur l'image ci-dessus correspond à l'utilisation d'une application comme Microsoft Authenticator.

Si l'on souhaite obtenir le statut du MFA uniquement sur les comptes qui ont le rôle "Administrateur général", c'est possible aussi. Il faut commencer par récupérer la liste de ces comptes (en prenant uniquement ceux sous licence) :

$AdminUsers = Get-MsolRoleMember -RoleObjectId $(Get-MsolRole -RoleName "Company Administrator").ObjectId | Where-Object {$_.isLicensed -eq $true}

Il ne reste plus qu'à appliquer une boucle Foreach et réutiliser la commande étudiée précédemment pour obtenir le statut du MFA sur les comptes admins :

$AdminUsers | Foreach{ Get-MsolUser -UserPrincipalName $_.EmailAddress | select DisplayName,UserPrincipalName,@{N="MFA Status"; E={ if( $_.StrongAuthenticationMethods.IsDefault -eq $true) {($_.StrongAuthenticationMethods | Where IsDefault -eq $True).MethodType} else { "Disabled"}}}}

Avec ces quelques commandes PowerShell, vous êtes en mesure de vérifier le statut du MFA sur vos comptes Office 365 !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.