Microsoft AD – E-Mail vor Ablauf des Kennwortes an Benutzer senden

In einigen Situationen kann es vorkommen das Benutzer nicht rechtzeitig über das Ablaufen des Kennwortes über Ihren Windows Client informiert werden. Dies passiert z.B. beim ständigen Arbeiten vom Home Office über VPN oder aber auch im Urlaubs oder Krankheitsfall. Zwar gibt es mit Exchange die Möglichkeit das Kennwort über OWA zurückzusetzen ich treffe aber auch immer auf Situationen bei denen dies technisch nicht umzusetzen werden kann oder auch einfach nicht gewollt ist. Nachfolgendes Power Shell-Skript wurde getestet ab Windows Server 2008 R2.

# Variablen deklarieren
$warnung_tage = 7

$smtpserver = "dein.mailserver.local"
$mailfrom = "[email protected]"
$betreff = "Dein Passwort läuft in 7 Tagen ab!"

$mailbody = "<div>
<p>Hallo,</p>
<p>Dein Kennwort wird in 7 Tagen ablaufen. Bitte melde Dich an der Dom&auml;ne an und &auml;ndere dein Passwort</p>
<p>Vielen Dank und viele Gr&uuml;&szlig;e</p>
</div>"

 # Benötigte Module einbinden
Import-Module ActiveDirectory

# Berechne das Datum + Anzahl der Tage zum späteren Vergleich
$warnung_datum = Get-Date -Format dd.MM.yyyy((Get-Date).adddays($warnung_tage)) 

# Filter alle AD User und die benötigten Attribute. Weiterhin wird das Ablaufdatum des
# Passwortes aus dem AD-Attribut msDS-UserPasswordExpiryTimeComputed umgerechnet und
# in umbenannt in PWAblaufdatum

$aduser=Get-ADUser -filter {(Enabled -eq $True) -and (PasswordNeverExpires -eq $False)} -Properties Mail, DisplayName, msDS-UserPasswordExpiryTimeComputed | Select Mail, DisplayName, @{Name="PWAblaufdatum";Expression={([datetime]::fromfiletime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime}}

# Schleife für jeden User aus $aduser
foreach ($i in $aduser){
     # Setze Variable für aktuellen User mit Passwortablaufdatum
     $PWAblaufdatum = Get-date($i.PWAblaufdatum) -Format dd.MM.yyyy 

     # Wenn die Werte gleich sind dann sende eine Mail
     if($PWAblaufdatum -eq $warnung_datum){

          Send-MailMessage -SmtpServer $smtpserver -From $mailfrom -To $i.Mail -Subject $betreff -BodyAsHtml $mailbody     }
 }

Download Power Shell-Skript

Das ganze Skript jetzt als geplante Aufgabe jede Nacht starten.

Viel Erfolg damit!

2 Gedanken zu „Microsoft AD – E-Mail vor Ablauf des Kennwortes an Benutzer senden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.