Il arrive dans certain cas de figure que nous souhaitions forcer le changement de mot de passe des comptes O365.
S'il s'agit d'un seul utilisateur voici la commande :
Set-MsolUserPassword -UserPrincipalName jdupont@mondomaine.com -ForceChangePasswordOnly $true -ForceChangePassword $true
Prenez soin de modifier le Userprincipalname de la commande sous peine d'obtenir une erreur.
En revanche si l'on veut forcer l'intégralité de la société à changer de mot de passe cela va nécessiter quelques lignes de plus.
# Variables
$LogFolder = "C:\temp"
$LogFile = "$LogFolder\LogO365_Reset.txt"
$LogFileError = "$LogFolder\LogO365_Reset_Error.txt"
# check
If (!(Test-Path $LogFolder)) {
New-Item $LogFolder -ItemType Directory
}
# Exceptions
$FilteredUsers = "Userprincipalname1", "Userprincipalname2", "Userprincipalname3" # Ajouter les UPN à ne pas reset (exemple le compte Admin du Tenant)
# Connect to O365
Connect-MsolService
# Get users
$AllUsers = Get-MsolUser -MaxResults 10000 | select UserPrincipalName
# Force to change Password
$AllUsers | foreach {
$UPN = $_.UserPrincipalName
If ($FilteredUsers -eq $UPN) {
Write-Host "Do not reset Password For $UPN because we had filtered him" | Add-Content $LogFile
}
Else {
Try {
Set-MsolUserPassword -UserPrincipalName $UPN -ForceChangePasswordOnly $true -ForceChangePassword $true
Write-Output "Succesfully reset Password For $UPN" | Add-Content $LogFile
}
Catch {
$Date = Get-Date
Write-Warning "At $Date the following Error Appear $($_)" | Add-Content $LogFileError
}
}
}
Bon courage au service IT pour le nombre d'appel qu'il va recevoir.