I wanted to expand on my previous script: powershell-to-list-all-users-and-when-their-password-expires, so that it would send the user an email if their password was going to expire soon. Additionally I wanted to send a summary to our IT staff of accounts that were going to expire soon.
Here is that script:
$maxdays=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays
$summarybody="Name `t ExpireDate `t DaysToExpire `n"
(Get-ADUser -filter {(Description -notlike "IfYouWantToExclude*") -and (Enabled -eq "True") -and (PasswordNeverExpires -eq "False")} -properties *) | Sort-Object pwdLastSet |
foreach-object {
$lastset=Get-Date([System.DateTime]::FromFileTimeUtc($_.pwdLastSet))
$expires=$lastset.AddDays($maxdays).ToShortDateString()
$daystoexpire=[math]::round((New-TimeSpan -Start $(Get-Date) -End $expires).TotalDays)
$samname=$_.samaccountname
$firstname=$_.GivenName
if ($daystoexpire -le 3){
$ThereAreExpiring=$true
$emailFrom = "[email protected]"
$emailTo = "[email protected]"
$subject = "$firstname, your password expires in $daystoexpire day(s)"
$body = "$firstname,
Your password expires in $daystoexpire day(s).
Please press Ctrl + Alt + Del -> Change password"
$smtpServer = "smtp.yourdomain.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)
$summarybody += "$samname `t $expires `t $daystoexpire `n"
}
}
if ($ThereAreExpiring) {
$emailFrom = "[email protected]"
$emailTo = "[email protected]"
$subject = "Expiring passwords"
$body = $summarybody
$smtpServer = "smtp.yourdomain.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)
}
Just what i am looking for. Thanks.
Hi Jeff, Thank you for all of your scripts. They have saved me a great amount of time and effort. I had a quick question on the password expire script. The output shows LastChanged date as 1/1/1601 and expire 2/12/1601. Is there something I need to change on this script for it to reflect the current year. Thanks for all your help. L
Thanks for sharing this useful script,
I have an also something to share related to this topic i.e. http://password-expiration-notification.blogspot.in/