PS Hinweis Kennwortablauf per E-Mail
Guten Morgen zusammen,
ich habe vor langer Zeit mal ein kleines PS Skript gebastelt, was automatisiert eine E-Mail an unsere Mitarbeiter versendet, wenn Ihr Kennwort abläuft.
Das Skript läuft lokal auf einem DC per Aufgabenplanung und wird jeden Freitag um 07:00 ausgeführt.
Nun habe ich das Skript etwas überarbeitet und Hilfeartikel zur Kennwortänderung mit eingebaut.
Dann habe ich das Skript Testweise ausgeführt und siehe da, es wirft Fehler.
Fehlermeldung im Skript Ablauf:
Könnte mir jemand verraten wie ich diese Fehlermeldung weg bekomme?
Meine Powershell "Skills" haben gerade mal so für das u.g Skript gereicht.
Wenn ich das hier eh schon poste:
- Kann ich den Mailbody auch als HTML formatieren, sodass z.B "Ihr Kennwort läuft in X Tagen ab" rot markieren kann?
- Wenn bei Mitarbeiter Max Müller das Kennwort am Samstag den 02.10.2021 abläuft, bekommt er nach meinem Verständnis keine Mail mit:
Ihr Kennwort läuft in 8 Tagen ab, wenn der Durchlauf am Freitag den 24.09.2021 statt findet. Somit bekommt der die Mail einen Tag vor Ablauf...etwas unglücklich.
Die Tage mag ich aber nicht auf 20+ setzten, da die Mitarbeiter sonst wohl 2-3 Mails erhalten, dass Ihr Kennwort bald abläuft, was wieder für Unmut bei dem ein oder anderen führt.
Mein Skript:
Ich bedanke mich bei euch schon einmal, für eure Tatkräftige Unterstützung.
ich habe vor langer Zeit mal ein kleines PS Skript gebastelt, was automatisiert eine E-Mail an unsere Mitarbeiter versendet, wenn Ihr Kennwort abläuft.
Das Skript läuft lokal auf einem DC per Aufgabenplanung und wird jeden Freitag um 07:00 ausgeführt.
Nun habe ich das Skript etwas überarbeitet und Hilfeartikel zur Kennwortänderung mit eingebaut.
Dann habe ich das Skript Testweise ausgeführt und siehe da, es wirft Fehler.
Fehlermeldung im Skript Ablauf:
MethodException: C:\Git\skript-galerie\Powershell\AD-Password-Expire-Mail-2021.ps1:16:1
Line |
16 | $daysleft=$ExpiryDate-$today
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot convert argument "1", with value: "21.09.2021 10:21:59", for "op_Subtraction" to type "System.TimeSpan": "Cannot convert value "21.09.2021 10:21:59" to type "System.TimeSpan". Error: "Invalid cast from 'System.DateTime' to
| 'System.TimeSpan'.""
Könnte mir jemand verraten wie ich diese Fehlermeldung weg bekomme?
Meine Powershell "Skills" haben gerade mal so für das u.g Skript gereicht.
Wenn ich das hier eh schon poste:
- Kann ich den Mailbody auch als HTML formatieren, sodass z.B "Ihr Kennwort läuft in X Tagen ab" rot markieren kann?
- Wenn bei Mitarbeiter Max Müller das Kennwort am Samstag den 02.10.2021 abläuft, bekommt er nach meinem Verständnis keine Mail mit:
Ihr Kennwort läuft in 8 Tagen ab, wenn der Durchlauf am Freitag den 24.09.2021 statt findet. Somit bekommt der die Mail einen Tag vor Ablauf...etwas unglücklich.
Die Tage mag ich aber nicht auf 20+ setzten, da die Mitarbeiter sonst wohl 2-3 Mails erhalten, dass Ihr Kennwort bald abläuft, was wieder für Unmut bei dem ein oder anderen führt.
Mein Skript:
$Credential = Get-Credential
Enter-PSSession -ComputerName <DomainController> –credential $Credential
Import-Module ActiveDirectory
Get-ADUser -filter * -properties PasswordLastSet,EmailAddress,GivenName,Surname -SearchBase "DC=<CompanyName>,DC=local" -SearchScope Subtree |foreach {
$PasswordSetDate=$_.PasswordLastSet
$maxPasswordAgeTimeSpan = $null
$maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
$today=get-date
$ExpiryDate=$passwordSetDate + $maxPasswordAgeTimeSpan
$daysleft=$ExpiryDate-$today
$display=$daysleft.days
$Vorname=$_.GivenName
$Nachname=$_.Surname
if ($display -lt 10 -and $display -gt 0)
{
$MyVariable = @"
Sehr geehrte/r $Vorname $Nachname,
ihr Kennwort wird in $display Tagen ablaufen.
Bitte aktualisieren Sie Ihr Kennwort rechtzeitig, da nach Ablauf des Kennwortes kein Zugriff mehr auf IT Systeme möglich ist.
Eine Anleitung zur Kennwortänderung finden Sie unter folgendem Artikel:
<Hilfe Artikel Intranet>
Beachten Sie dabei bitte auch die aktuell gültige Passwortrichtlinie, zu finden in folgendem Artikel:
<URL zur Kennwortrichtlinie>
Sollten Sie Probleme bei der Kennwortänderung haben, wenden Sie sich an das IT-Helpdesk.
helpdesk@company.de
Mit freundlichen Grüßen,
IT Abteilung
*** Diese Nachricht wurde automatisch generiert - bitte antworten Sie nicht darauf! ***
"@
#send-mailmessage -to $_.EmailAddress -from no-reply@company.de -Subject "Information: Ihr Kennwort wird in $display Tagen ablaufen" -body $MyVariable -smtpserver smtp-out.company.local -encoding ([System.Text.Encoding]::UTF8)
send-mailmessage -to personal@company.de -from no-reply@company.de -Subject "Information: Ihr Kennwort wird in $display Tagen ablaufen" -body $MyVariable -smtpserver smtp-out.company.local -encoding ([System.Text.Encoding]::UTF8)
}
Ich bedanke mich bei euch schon einmal, für eure Tatkräftige Unterstützung.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1287350724
Url: https://administrator.de/contentid/1287350724
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
4 Kommentare
Neuester Kommentar
$_.PasswordLastSet
Du prüfst nicht ob PasswordLastSet $null ist, bei neuen Usern bei denen das Datum dort noch nicht gesetzt ist macht es dann peng bei der Berechnung.Außerdem berücksichtigst du keine PSOs (PasswordSettingObjects) in deinem Code, welche bei Usern zu anderen Ablaufdaten führen kann.
Kann ich den Mailbody auch als HTML formatieren, sodass z.B "Ihr Kennwort läuft in X Tagen ab" rot markieren kann?
Ja, bei Send-Mailmessage den Parameter -BodyAsHtml setzen und dann den Body als HTML formatieren und via CSS den Text formatieren.