124909

Powershell: Passwordreminder Mail - Overflow-Fehler- Foreach

Hallo,

Ich möchte ein Skript schreiben, welches den User erinnert, dass er sein Passwort ändern soll wenn es in 14, 7 und 1 Tag abläuft.(Policy 90 Tage)

Nur leider scheint irgendein Fehler in meiner Foreach-Schleife zu steken den ich nich finde. Es kommt zu einem Overflow-Fehler könnt Ihr mir helfen ?


  1. Abfrage
$adUsers = Get-ADUser -Filter * -Searchbase $searchbase -Properties * | Select-Object SamAccountName, PasswordLastSet

foreach ($adUser in $adUsers){

$PasswordDatum = $adUsers.PasswordLastSet
$differenz =$null
$differenz =(($todayDate) - ($adusers.PasswordLastSet)).days

if ($differenz -eq "76")
{Send-MailMessage -to $email -from $absender -Subject "Ihr Passwort laeuft in 7 Tagen ab!" -Body $body -Encoding UTF8}
elseif ($differenz -eq "83")
{Send-MailMessage -to $email -from $absender -Subject "Ihr Passwort laeuft in 7 Tagen ab!" -Body $body -Encoding UTF8}

elseif ($differenz -eq "89")
{Send-MailMessage -to $email -from $absender -Subject "Ihr Passwort laeuft morgen ab!" -Body $body -Encoding UTF8}
}

Vielen Dank und schönes Wochenende schonmal face-smile
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 287705

Url: https://administrator.de/forum/powershell-passwordreminder-mail-overflow-fehler-foreach-287705.html

Ausgedruckt am: 30.04.2025 um 17:04 Uhr

122990
Lösung 122990 06.11.2015 aktualisiert um 13:29:49 Uhr
Goto Top
Moin,
nun ja da stimmt so manches nicht, da du ebenfalls nicht die User ausfillterst bei denen kein PasswordDatum gesetzt ist ! Außerdem solltest du spezielle AD-User ausfiltern, ich mache das hier so: Nur User mit Vor- und Nachnamen werden in die Liste mit aufgenommen, das musst du aber nach deinen Ansprüchen anpassen.
$maxPassAge = 90
get-AdUser -Filter * -Properties PasswordLastSet | ?{$_.Surname -ne $null -and $_.GivenName -ne $null -and $_.PasswordLastSet -ne $null} | %{
    $rest = $maxPassAge - ((get-date) - $_.PasswordLastSet).Days
    if($rest -match '^(14|7|1)$'){  
        write-host "Passwort von '$($_.SamAccountname)' läuft ab in $rest Tag(en)"  
        Send-MailMessage -to $email -from $absender -Subject "Ihr Passwort laeuft in $rest Tag(en) ab!" -Body $body -Encoding UTF8  
    }
}

Gruß grexit
124909
124909 06.11.2015 um 13:29:45 Uhr
Goto Top
Hey, Danke für die schnelle und gute Hilfe!

Vor und Nachname und PasswordLastSet sind bei uns immer gesetzt deswegen kein Filter. Nichtsdestotrotz funktioniert es jetzt, nach ein bisschen ummodeln. Die bestimmung der Variable $rest hat mir da sehr geholfen

Vielen Dank!