AD Password Reminder Mail
Hallo liebe Leute,
ich habe vor langer Zeit einmal ein Password Reminder Mail Script erstellt, welches nun nicht mehr so richtig will, wie es soll.
Anbei das Script:
Das Script läuft einwandfrei, wenn ich in der letzten Zeile statt "$_.emailaddress" eine feste E-Mailadresse eines Empfängers eintrage. Ich bin einfach mittlerweile zu betriebsblind für das Script *duck und weg*.
Ich brauche in jedem Fall dort dynamisch die Empfängermailadresse aus der AD.
Was mache ich falsch, bzw. wie muss diese Zeile korrekt aussehen?
Die Fehlermeldung lautet wie folgt:
Vielen Dank vorab für eure Unterstützung.
ich habe vor langer Zeit einmal ein Password Reminder Mail Script erstellt, welches nun nicht mehr so richtig will, wie es soll.
Anbei das Script:
Import-Module ActiveDirectory
Get-ADUser -filter * -properties PasswordLastSet,EmailAddress,GivenName,Surname -SearchBase “OU=Benutzer,OU=Nuernberg,DC=contoso,DC=com” -SearchScope Subtree |foreach {
$PasswordSetDate=$_.PasswordLastSet
$maxPasswordAgeTimeSpan = $null
$maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
$today=get-date
$ExpiryDate=$passwordSetDate + $maxPasswordAgeTimeSpan
$daysleft=$ExpiryDate-$today
$display=$daysleft.days
$UserName=$_.GivenName
$SurName=$_.Surname
if ($display -lt 25 -and $display -gt 0)
{
$MyVariable = @”
Sehr geehrte/r $UserName $Surname,
Ihr Kennwort wird in $display Tagen ablaufen. Bitte aendern Sie Ihr Kennwort zeitnah.
****Diese Nachricht wurde automatisch generiert. Bitte antworten Sie nicht darauf.
“@
send-mailmessage -to $_.emailaddress -from Support@23gmbh.de -Subject “IT Information: Ihr Kennwort wird in $display Tagen ablaufen.” -body $MyVariable -smtpserver Server123
}
}
**
Ich brauche in jedem Fall dort dynamisch die Empfängermailadresse aus der AD.
Was mache ich falsch, bzw. wie muss diese Zeile korrekt aussehen?
Die Fehlermeldung lautet wie folgt:
Send-MailMessage : Cannot validate argument on parameter 'To'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At C:\Scripte\ITpassword.ps1:32 char:22
+ send-mailmessage -to $_.EmailAddress -from Support@23gmbh.de ...
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Send-MailMessage], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.SendMailMessage**
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 392525
Url: https://administrator.de/contentid/392525
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
11 Kommentare
Neuester Kommentar
Always check the contents of your variables first, before using them! Besides this, your script also doesn't take into account that a user could be under the control of a PSO (password settings object) and thus can have a different max. password age! Common error that most unaware users do not respect with their reminders.
Best regards.
Best regards.
Auf mindestens einem Account wird die Adresse nicht eingepflegt sein - und das gibt dir den Fehler.
Teste folgendes: erzeuge eine Test-OU "Test" als unterOU deiner User-OU. Füge da deinen eigenen oder einen Testuser ein und änder Zeile 3 auf
Passe natürlich auch
if ($display -lt 25 -and $display -gt 0)
so an, dass hinter lt eine Zahl steht, die die Tage bis zur Änderung deines eigenen Kennwortes überschreitet.
Teste folgendes: erzeuge eine Test-OU "Test" als unterOU deiner User-OU. Füge da deinen eigenen oder einen Testuser ein und änder Zeile 3 auf
“OU=Test,OU=Benutzer,OU=Nuernberg,DC=contoso,DC=com” -SearchScope Subtree |foreach {
Passe natürlich auch
if ($display -lt 25 -and $display -gt 0)
so an, dass hinter lt eine Zahl steht, die die Tage bis zur Änderung deines eigenen Kennwortes überschreitet.
Moin,
so geht's:
hth
Erik
so geht's:
$users = Get-ADUser -filter * -properties PasswordLastSet,mail,GivenName,Surname -SearchBase OU=Benutzer,OU=Nuernberg,DC=contoso,DC=com” -SearchScope Subtree
foreach($user in $users) {
$PasswordSetDate=$_.PasswordLastSet
$maxPasswordAgeTimeSpan = $null
$maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
$today=get-date
$ExpiryDate=$passwordSetDate + $maxPasswordAgeTimeSpan
$daysleft=$ExpiryDate-$today
$display=$daysleft.days
$UserName=$user.GivenName
$SurName=$user.Surname
if ($display -lt 25 -and $display -gt 0) {
$MyVariable = @”
Sehr geehrte/r $UserName $Surname,
Ihr Kennwort wird in $display Tagen ablaufen. Bitte aendern Sie Ihr Kennwort zeitnah.
Diese Nachricht wurde automatisch generiert. Bitte antworten Sie nicht darauf.
“@
send-mailmessage -to $user.mail -from Support@23gmbh.de -Subject “IT Information: Ihr Kennwort wird in $display Tagen ablaufen.” -body $MyVariable -smtpserver Server123
}
}
hth
Erik
Set the -Encoding Parameter for Send-Mailmessage to UTF8.