Office 365 : Forcer les utilisateurs à changer leur mot de passe

Nous allons voir ici comment forcer des utilisateurs à changer leur mot de passe Office 365.

En premier lieu nous verrons comment procéder avec un seul compte puis en quantité industrielle.

Installation des prérequis

Afin de pouvoir nous connecter à Office 365 avec PowerShell nous aurons besoin du module MSOnline.

  • Ouvrir un prompt PowerShell avec les droits administrateur :
Windows | Ouvrir PowerShell avec les droits administrateur
  • Install MSOnline module :
PS C:\> Install-Module -Name MSOnline
PowerShell | Installer le module MSOnline

Se connecter à Office 365

  • Utiliser la commande Connect-MsolService pour ouvrir la fenêtre d'authentification Microsoft Office 365 :
PS C:\> Connect-MsolService
  • Renseigner des identifiants administrateur :
PowerShell | Connect-MsolService, Fenêtre d'authentification
  • Entrer le mot de passe :
PowerShell | Connect-MsolService, Fenêtre pour le mot de passe

Réinitialiser le mot de passe utilisateur

Forcer un nouveau mot de passe

  • Avec la commande suivante nous pouvons manuellement définir un mot de passe pour un utilisateur :
    • -ForceChangePassword : Paramétrer le fait que l'utilisateur ait à changer le mot de passe à la prochaine connexion (ici, $False pour désactiver)
PS C:\> Set-MsolUserPassword -UserPrincipalName user@shebangthedolphins.net -NewPassword NewPassw0rd -ForceChangePassword $False

Forcer un utilisateur à changer son mot de passe

  • Avec cette commande, la procédure invitant l'utilisateur à changer de mot de passe apparaitra à la prochaine connexion de ce dernier (cela sera plus long avec un client Outlook car, si d'après ce que j'ai compris, il utilise un système de cache) :
    • -ForceChangePassword : Paramétrer le fait que l'utilisateur ait à changer le mot de passe à la prochaine connexion (ici, $True pour activer)
    • -ForceChangePasswordOnly : Empécher la commande Set-MsolUserPassword de générer un mot de passe aléatoire (source)
PS C:\> Set-MsolUserPassword -UserPrincipalName user@shebangthedolphins.net -ForceChangePasswordOnly $true -ForceChangePassword $true

Divers

  • Pour chercher un utilisateur :
PS C:\> Get-MsolUser -SearchString cartman
PowerShell | Get-MsolUser, Rechercher un utilisateur
  • Extraire tous les utilisateurs qui ont une licence active vers un fichier texte :
PS C:\> Get-MsolUser | Where-Object {$_.islicensed} | Select-Object UserPrincipalName | Sort-Object UserPrincipalName > c:\users.txt
Office365 | notepad avec des comptes utilisateurs

Script PowerShell pour forcer des utilisateurs à changer de mot de passe

Si l'on veut forcer un grand nombre d'utilisateur à changer leur mot de passe il sera plus simple de l'automatiser avec un script PowerShell.

  • La première chose à faire est de créer un fichier C:\users.txt qui contiendra la liste des comptes utilisateurs pour lesquels les mots de passe devront être changés :
Office365 | notepad avec des comptes utilisateurs
  • Exécuter ce script PowerShell pour forcer les utilisateurs présents dans le fichier texte à changer leur mot de passe :
###########################
# author : shebangthedolphins.net
# version : 1.0
# date : 2021.04
# role : force users from a text file to change their Office 365 passwords
# other : create a C:\users.txt file where you will put users
# updates :
#       - 1.0 (2021/03) : First Version
Connect-MsolService
$file = "C:\users.txt"

ForEach ($line in (Get-Content -Path $file)) {
    Write-host "Set-MsolUserPassword -UserPrincipalName" $line.Replace(' ','') "-ForceChangePasswordOnly $true -ForceChangePassword $true"
    Set-MsolUserPassword -UserPrincipalName $line.Replace(' ','') -ForceChangePasswordOnly $true -ForceChangePassword $true
}
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :