Nous allons voir comment forcer les utilisateurs à changer leurs mots de passe Microsoft 365 avec PowerShell.
Tout d'abord, je décrirai comment le faire étape par étape à partir de la ligne de commande PowerShell pour un seul compte. Puis, je montrerai un petit script pour le faire pour plusieurs comptes stockés dans un fichier texte.
Pour pouvoir se connecter à Microsoft 365 avec PowerShell nous aurons besoin du module Microsoft.Graph.
PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS C:\> Install-Module -name Microsoft.Graph
PS C:\> Connect-MgGraph
PS C:\> Update-MgUser -UserId user@shebangthedolphins.net -PasswordProfile @{ Password = "NewPassw0rd"; ForceChangePasswordNextSignIn=$false; ForceChangePasswordNextSignInWithMfa=$false }
PS C:\> Update-MgUser -UserId user@shebangthedolphins.net -PasswordProfile @{ ForceChangePasswordNextSignIn=$true; ForceChangePasswordNextSignInWithMfa=$false }
PS C:\> Get-MgUser -ConsistencyLevel eventual -Count userCount -Search '"DisplayName:cartman"'
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.
###########################
# author : shebangthedolphins.net
# version : 1.1
# date : 2024.11
# role : force a list of users stored in a text file to change their Microsoft 365 password
# other : create a C:\users.txt file in which to place users
# updates :
# - 1.0 (2021/03) : First Version
# - 1.1 (2024/11) : Replace obsolete MsolService with Microsoft.Graph
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Connect-MgGraph
$file = "C:\users.txt"
ForEach ($line in (Get-Content -Path $file)) {
Write-Host "Working on $line.Replace(' ','')"
#Set-MsolUserPassword -UserPrincipalName $line.Replace(' ','') -ForceChangePasswordOnly $true -ForceChangePassword $true
Update-MgUser -UserId $line.Replace(' ','') -PasswordProfile @{ ForceChangePasswordNextSignIn=$true; ForceChangePasswordNextSignInWithMfa=$false }
}
Contact :