Hi Slava,
This is a script:
$ReqVersion = [version]"1.2.2.1254"
$QadVersion = (Get-PSSnapin Quest.ActiveRoles.ADManagement).Version
if($QadVersion -lt $ReqVersion)
{
throw "Quest AD cmdlets version '$ReqVersion' is required. Please download the latest version"
}
function sendmail($attachment)
{
$SmtpClient = New-Object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = 192.168.x.x
$mailmessage.from = netadmin@email.com"
$mailmessage.To.add($mailTo)
$mailmessage.Subject = $subject
$MailMessage.IsBodyHtml = 1
$mailmessage.Body = $body
$smtpclient.Send($mailmessage)
}
$MaximumPassAge = (Get-QADObject (Get-QADRootDSE).defaultNamingContextDN).MaximumPasswordAge.days
if($MaximumPassAge -le 0)
{
throw "MaximumPasswordAge password policy is not configured."
}
$NetAdminReport=$null
#Sets when to start emailing users about password expiration
$DaysToExpire = 10
Get-QADUser -Enabled -PasswordNeverExpires:$false -SizeLimit 0 -Email * |
Select-Object Name,Email,FirstName,@{Name="Expires";Expression={ $MaximumPassAge - $_.PasswordAge.days }} |
Where-Object {$_.Expires -gt 0 -AND $_.Expires -le $DaysToExpire } | Foreach-Object {
#Emails admin instead of user(testing purposes)
#$mailTo = "netadmin@email.com"
#Emails user
$mailTo = $_.Email
#Lists each user whose password is expires and when
$NetAdminReport += "$($_.Name)" + " (Password expires in " + "$($_.Expires)" + " days)
"
#Body of Net Admin Report
$ReportBody="A Password Expiration Notice has been sent to the following users:
$($NetAdminReport)"
#Subject of Password Expiration Email to User
$Subject = "Password reminder: $($_.Name) your email password will expire in $($_.Expires) days"
$body = "<p style = ""font-size: 11pt; font-family: Calibri""> Hello $($_.FirstName), <br /> <br /> Your current domain password will expire in <b>$($_.Expires) days.</b></p>"
sendmail $Allservers
}
#Send Admin Report
if($NetAdminReport -ne $null)
{
Send-MailMessage -SmtpServer 192.168.x.x -From netadmin@email.com -To netadmin@email.com -Subject "Password Expiration Report" -Body $ReportBody
}
-
Edited by
Anirik
17 hours 27 minutes ago