Okay, falls Sie nicht gerade hinterm Mond leben, ist Ihnen sicher aufgefallen, dass Microsoft zwar einige Passwortrichtlinien gelockert hat, die meisten lokalen Active Directory-Umgebungen aber immer noch ein Ablaufdatum für Passwörter vorschreiben. Und nicht selten vergessen Benutzer, ihre Passwörter rechtzeitig zu aktualisieren, was zu diesen lästigen Anrufen beim IT-Support führt – die wirklich niemand möchte. In diesem Artikel erfahren Sie, wie Sie überprüfen können, wann das Passwort eines Benutzers abläuft, und wie Sie ihn rechtzeitig daran erinnern können.
Einiges davon ist ganz einfach, aber Windows kann bei Ablaufbenachrichtigungen etwas trickreich sein. Wenn Sie also das Chaos nach einem abgelaufenen Passwort vermeiden möchten, kann Ihnen das Wissen, wie Sie Ablaufdaten abrufen und Benachrichtigungen einrichten, viel Ärger ersparen. Sie lernen, wie Sie mit PowerShell Informationen zum Passwortablauf abrufen, integrierte Benachrichtigungen aktivieren und sogar benutzerdefinierte Pop-ups oder E-Mail-Benachrichtigungen erstellen. Denn ehrlich gesagt ist eine Vorwarnung allemal besser als eine Kontosperrung.
So beheben Sie Benachrichtigungen über abgelaufene Passwörter für Active Directory-Benutzer
Wie man das Ablaufdatum des Benutzerpassworts in Active Directory ermittelt
Zunächst einmal muss man wissen, wann Passwörter tatsächlich ablaufen – sonst sind alle Benachrichtigungen reine Spekulation. Der Hauptgrund dafür ist, dass man so eine klare Frist hat, um Nutzer rechtzeitig, vielleicht ein paar Tage vorher, zu warnen, damit sie ihr Passwort problemlos ändern können. Manchmal reichen die integrierten Hinweise nicht aus; sie erscheinen als kleine Pop-up-Benachrichtigungen, die die meisten Nutzer ignorieren – bis es zu spät ist. Das genaue Ablaufdatum hilft dabei, gezieltere Erinnerungen zu erstellen.
Führen Sie dazu folgenden PowerShell-Befehl aus (das Active Directory-Modul muss installiert sein):
Get-ADUser -Identity jsmith -Properties msDS-UserPasswordExpiryTimeComputed, PasswordLastSet, PasswordNeverExpires, PasswordExpired | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, PasswordExpired, @{Name="ExpiryDate"; Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
Dadurch werden Informationen wie das Datum der letzten Passwortänderung und das berechnete Ablaufdatum ausgegeben. Um alle Benutzer einer bestimmten Organisationseinheit aufzulisten, deren Passwort demnächst abläuft, können Sie beispielsweise Folgendes tun:
$Users = Get-ADUser -SearchBase "OU=Users, OU=NewYork, DC=woshub, DC=com" -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false} -Properties msDS-UserPasswordExpiryTimeComputed $Users | Where-Object { ([datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")) -lt (Get-Date).AddDays(7) } | Select-Object Name, @{Name="ExpirationDate"; Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
Hinweis: Wenn msDS-UserPasswordExpiryTimeComputed den Wert 0 zurückgibt, bedeutet dies in der Regel, dass das Passwort nie abläuft oder nicht festgelegt wurde. Dies sollte man im Hinterkopf behalten, falls das Benutzerkonto nicht mehr reagiert.
Aktivieren von Benachrichtigungen zum Ablauf von Kennwörtern über Gruppenrichtlinien
Wenn Benutzer das standardmäßig von Windows angezeigte kleine Popup-Fenster weiterhin ignorieren (was häufig vorkommt), können Sie die Richtlinie „Interaktive Anmeldung: Benutzer vor Ablauf des Kennworts zum Ändern auffordern“ aktivieren. Sie finden diese unter:
Computerkonfiguration > Richtlinien > Windows-Einstellungen > Sicherheitseinstellungen > Lokale Richtlinien > Sicherheitsoptionen.
Diese Funktion ist normalerweise standardmäßig aktiviert und wird etwa 5 Tage im Voraus angekündigt. Oftmals erscheint die Meldung jedoch so kurz, dass sie kaum wahrgenommen wird. Sie können die Vorwarnzeit verlängern – beispielsweise auf 14 Tage –, um die Nutzer frühzeitig zu informieren.
Benutzerdefinierte Pop-ups mit PowerShell anzeigen
Jetzt wird es etwas praktischer. Sie können ein PowerShell-Skript einrichten, das eine Meldung anzeigt, wenn ein Passwort in weniger als beispielsweise fünf Tagen abläuft. Es mag etwas ungewöhnlich klingen, aber dieses kleine Skript prüft, ob Ihr Passwort bald abläuft, und fragt Sie dann, ob Sie es jetzt ändern möchten.
$DaysLeft = 5 try { Add-Type -AssemblyName PresentationCore, PresentationFramework, WindowsBase, System. Windows. Forms } catch { Throw "Failed to load necessary assemblies." } $curruser = Get-ADUser -Identity $env:USERNAME -Properties 'msDS-UserPasswordExpiryTimeComputed', 'PasswordNeverExpires' if (-not $curruser. PasswordNeverExpires) { $expiry = [datetime]::FromFileTime($curruser."msDS-UserPasswordExpiryTimeComputed") $timediff = ($expiry - (Get-Date)).Days if ($timediff -lt $DaysLeft) { $result = [System. Windows. MessageBox]::Show($"Your password expires in { $timediff } days.`nChange now?", "Password Expiry Alert", "YesNo", "Warning") if ($result -eq "Yes") { # This part tries to open the standard Windows change password UI Start-Process "C:\Windows\System32\CredUIPackagesNotSupported.dll" # Placeholder for actual password change trigger } } }
Dieses Skript benötigt das Active Directory-Modul. Planen Sie die Ausführung beim Anmelden oder als Teil des Anmeldeskripts eines Benutzers über die Aufgabenplanung oder Gruppenrichtlinien. Auf manchen Rechnern funktioniert es möglicherweise nicht sofort und erfordert einen Neustart oder eine manuelle Ausführung. Etwas ungewöhnlich, aber praktisch, wenn Sie proaktive Benachrichtigungen wünschen.
Beachten Sie, dass dies nur auf Rechnern funktioniert, die Ihrer Active Directory-Domäne beigetreten sind. Benutzer, die sich per VPN oder Webzugriff (z. B.Outlook Web Access) verbinden, werden wahrscheinlich nicht berücksichtigt. In diesem Fall ist es ratsam, die Benutzer vorab per E-Mail zu benachrichtigen.
Automatisierter Versand von Ablauf-E-Mails mit PowerShell
Wenn Sie lieber E-Mail-Erinnerungen nutzen, können Sie die Ablaufdaten der Passwörter erfassen und den Nutzern eine Erinnerungs-E-Mail senden, bevor ihr Passwort abläuft. Die Idee ist einfach: Ein Skript prüft, wessen Passwort in weniger als einer Woche abläuft, und sendet diesen Nutzern eine freundliche Benachrichtigung.
$Sender = "[email protected]" $Subject = "Important! Your password is about to expire!" $BodyTxt1 = "Your password for " $BodyTxt2 = " expires in " $BodyTxt3 = " days. Please change it before it gets locked." $smtpServer = "smtp.woshub.com" $warnDays = (Get-Date).AddDays(7) $users = Get-ADUser -SearchBase "OU=Users, OU=NewYork, DC=woshub, DC=com" -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false} -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress | ForEach-Object { [PSCustomObject]@{ Name = $_. Name ExpirationDate = [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") Email = $_. EmailAddress } } foreach ($user in $users) { if ($user. ExpirationDate -lt $warnDays) { $daysLeft = ($user. ExpirationDate - (Get-Date)).Days $body = "$($BodyTxt1)$($user. Name)$($BodyTxt2)$daysLeft$($BodyTxt3)" Send-MailMessage -To $user. Email -From $Sender -SmtpServer $smtpServer -Subject $Subject -Body $body } }
Dieses Skript muss regelmäßig ausgeführt werden – am besten über eine geplante Aufgabe, die täglich ausgeführt wird. Tragen Sie außerdem Ihre SMTP-Serverinformationen ein. Es sind keine komplizierten Einstellungen erforderlich, aber denken Sie daran: Wenn Ihr SMTP-Server eine Authentifizierung erfordert, müssen Sie die Parameter `-Credential` hinzufügen. Das Skript kann bei Bedarf auch so angepasst werden, dass Nachrichten über Teams oder Slack versendet werden. Dazu müssen Sie lediglich die Versandart der Benachrichtigungen ändern.
Diese Methoden machen Passwörter zwar nicht unfehlbar, aber sie warnen rechtzeitig, damit Nutzer nicht mit einem inaktiven Konto dastehen. Hoffentlich erspart das jemandem stundenlange Telefonate mit der Frage: „Wer hat Bob vergessen, sein abgelaufenes Passwort zu melden?“
Zusammenfassung
- Verwenden Sie PowerShell mit `Get-ADUser`, um die Ablaufdaten von Passwörtern zu überprüfen.
- Aktivieren Sie die Windows-Sicherheitseinstellung für Benachrichtigungen vor Ablauf der Gültigkeit – vorausgesetzt, die Benutzer achten tatsächlich darauf.
- Richten Sie benutzerdefinierte Pop-ups mit einem kleinen Skript ein, das das Ablaufdatum prüft und zur Änderung auffordert.
- Automatisierte E-Mail-Erinnerungen für Nutzer, deren Zeit bald abläuft.
Zusammenfassung
Ich habe eine Möglichkeit gefunden, Nutzer an ihre Passwortablaufdaten zu erinnern, ohne sie ständig daran erinnern zu müssen. Nicht narrensicher, aber ausreichend, um Anrufe wegen abgelaufener Passwörter zu vermeiden. Auf einem Rechner brauchte das Pop-up-Skript ein paar Anläufe, bis es richtig funktionierte, aber nach etwas Feintuning läuft es zuverlässig. Man muss nur daran denken, es zu planen und die Skripte aktuell zu halten. Hoffentlich hilft das jemandem, Passwortchaos in letzter Minute zu vermeiden!