Manchmal möchte man ein bestimmtes Office 365 Konto schnell geändert wissen. Möglicherweise weil das Kennwort auf einem Zettel unter der Tastatur aufgetaucht ist oder ein Gerät verschwunden ist. Es wäre toll, wenn man den Benutzer schnell zur Änderung zwingen könnte.
Leider gibt Microsoft dem Administrator dafür kein GUI-Werkzeug in die Hand. Man kann in der Oberfläche das Kennwort zwar gewaltsam „zurücksetzen“, aber leider nicht als „abgelaufen“ markieren. Eine Kennwortablaufrichtline gibt es nur Unternehmensweis und nur in Tagen.
Lösung
An der PowerShell ist das natürlich möglich. Man muss dazu das MSOnline Modul in seiner PowerShell aktive haben (import-module MSOnline
) und mit dem Microsoft-Tenant verbunden sein (Connect-MsolService
).
Erzwingt die sofortige Änderung
Set-MsolUserPassword -UserPrincipalName "[email protected]" -ForceChangePassword $true -ForceChangePasswordOnly $true
⚠ Die Dokumentation des Commandlets „Set-MsolUserPassword
“ ist leider unvollständig.
ForceChangePassword $true
erzwingt das der Benutzer bei der nächsten Anmeldung sein Kennwort ändertForceChangePasswordOnly $true
sorgt dafür, das kein neues Kennwort automatisch vergeben wird
Man kann natürlich auch an der Kommandozeile ein neues Kennwort vorgeben:
Set-MsolUserPassword -UserPrincipalName "[email protected]" -NewPassword "GEHE1MK3NNW0RT"
Oder von der Powershell ein neues Kennwort generieren und setzen lassen:
Set-MsolUserPassword -UserPrincipalName "[email protected]" -ForceChangePassword
Erzwingt die Änderung des Kennwortes nach Datum
Man kann in Set-MsolUserPasswor
d auch beliebige Selektionen hinein-pipen. Das vereinfacht beispielweise die Vorgabe nach einem bestimmten Datum (hier der 24. Juli 2021) oder nach Alter.
Get-MsolUser | where LastPasswordChangeTimestamp -lt (Get-Date 24.07.2021) | Set-MsolUserPassword -ForceChangePassword $true -ForceChangePasswordOnly $true
Hinweis: „Sonderfall“ Outlook
Nachdem man für den nächsten Login eine Passwortänderung „erzwungen“ hat, funktioniert nun allerdings noch das bestehende Passwort und vor Allem Outlook kann wunderbar mit einem bestehenden Session-Token weiterarbeiten (auch mehrere Wochen lang).
Um im Outlook einen neuen Login zu erzwingen, muss man das Session-Token revoken. Das geht ebenfalls per PowerShell, benötigt aber das AzureAD Modul (😑):
Get-AzureADUser -SearchString "[email protected]" | Revoke-AzureADUserAllRefreshToken
Oder für die selben Benutzer wie oben (nach letztem Änderungsdatum):
Get-MsolUser | where LastPasswordChangeTimestamp -lt (Get-Date 24.07.2021) | foreach {Get-AzureADUser -SearchString $_.UserPrincipalName} | Revoke-AzureADUserAllRefreshToken