Im Normalfall erhalten Benutzer einen Hinweis zur Änderung ihres Passwortes in Windows. Was jedoch, wenn Sie z. B. Benutzer haben, die lediglich ein Smartphone haben?
Vielleicht wollen Sie Ihre Benutzer daher über eine anstehende Änderung des Passwortes proaktiv per E-Mail benachrichtigen. Für diesen Fall hilft Ihnen dieses kleine Powershell-Skript weiter. Dies durchsucht das AD nach Nutzerkonten, deren Passwort in den nächsten xx Tagen abläuft und sendet eine E-Mail mit Informationen an den Nutzer.
Es ist vielleicht nicht das schönste Skript, erfüllt jedoch seinen Zweck.

Für Anmerkungen oder Verbesserungsvorschläge hinterlasst gern einen Kommentar.

# Zweck: Suchen der Nutzer, deren Passwort in den nächsten xx Tagen abläuft. Diese erhalten eine E-Mail, um ihr Passwort zu ändern.
# Datum: 01.01.2019
# Version 0.2

#Import Active Directory Module
Import-Module ActiveDirectory
#Anzahl der Tage, wie lange vorher benachrichtigt wird.
$Days=30

$Date=Get-Date -Format yy-MM-dd((Get-Date).adddays($Days))
$Today=Get-Date -Format yy-MM-dd((Get-Date))
$Users=Get-ADUser -filter {(Enabled -eq $True) -and (PasswordNeverExpires -eq $False)} -Properties DisplayName, msDS-UserPasswordExpiryTimeComputed, Mail | 
Where-Object {$_.DisplayName -ne $null} | Select Mail, DisplayName,@{Name=”ExpiryDate”;Expression={([datetime]::fromfiletime($_.”msDS-UserPasswordExpiryTimeComputed”)).DateTime}}

foreach ($Entry in $Users) {
    $EntryDate = Get-date($Entry.ExpiryDate) -Format yy-MM-dd
    if ($EntryDate -lt $Date -and $Entry.Mail -ne $null -and $EntryDate -ge $Today) {
        Write-Host “Alarm: Passwort für Konto” $entry.DisplayName “mit der E-Mailadresse:” $Entry.Mail “wird ablaufen am” $EntryDate -ForegroundColor Red

    $Ablaufdatum = Get-date($Entry.ExpiryDate) -Format dd.MMM.yyyy
    $Mailbody = -join("Das Passwort für das ActiveDirectory Konto ",$entry.DisplayName," läuft am ",$Ablaufdatum," ab. Bitte ändern Sie Ihr Passwort rechtzeitig.”)
    $Mailbody += "`n"+"Informationen zur Änderung unter Windows erhalten Sie unter https://helpdesk.xxxxxxxx"
    $Mailbody += "`n"+"Ggf. muss das Passwort danach auf Mobilgeräten aktualisiert werden."
    $Mailbody += "`n"+"`n"+"`n"+"Diese Information wurde automatisch generiert."
    $password = ConvertTo-SecureString '##########' -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential ('user', $password)

    Send-MailMessage -To $Entry.Mail -From “script@internal” -Cc "cc@internal" -Subject “Passwortablauf AD-Konto” -Body $Mailbody -SmtpServer “mailserver.internal” -Port 587 -Encoding ([System.Text.Encoding]::UTF8) -Credential $credential
    #pause
    }
else
    {
        #Write-host “OK: The User” $entry.DisplayName “with Mailaddress:” $Entry.Mail “will expire at” $EntryDate -ForegroundColor green
    }
}

Teile diesen Beitrag

Schreibe einen Kommentar