124909
Nov 06, 2015, updated at 12:29:49 (UTC)
1347
2
0
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 ?
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
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 ?
- Abfrage
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 287705
Url: https://administrator.de/contentid/287705
Printed on: April 19, 2024 at 23:04 o'clock
2 Comments
Latest comment
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.
Gruß grexit
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