如下脚本可编辑保存为ps文件,放置计划任务里面每天运行即可。
注意:邮箱的地址、邮箱后缀和邮箱密码需要根据实际情况修改。

[powershell]

Import-Module Activedirectory

$alladuser=Get-ADUser -Filter 'PasswordNeverExpires -eq "false" -and enabled -eq "true"'

$userlist = @()

foreach ($user in $alladuser){
#密码最后一次更改时间
$pwdlastset=Get-ADUser $user -Properties * |ForEach{$_.passwordlastset}
#密码的过期时间
$pwdlastday=($pwdlastset).adddays(180)
#当前时间
$now=get-date
#距离密码过期的时间
$expire_days=($pwdlastday - $now).Days

$aduser= Get-ADUser $user -Properties * |ForEach{$_.SamAccountName}

if($expire_days -lt 7 -and $expire_days -gt 0 ){

$From = "[email protected]"
$To = "[email protected]"
$Subject = "域账号即将过期提示"
#$Body = "您的域账号即将过期,请尽快修改"
$Body = "您好,
您的域帐号 密码将会于 $expire_days 天后过期。请尽快修改!
修改方法:使用手机企业微信,打开工作台,点击IT小蜜,选择修改域账号密码。如忘记密码请在IT小蜜里选择重置域密码。

这封邮件由管理程序自动生成,请勿直接回复!"
$smtpServer = "smtp.exmail.qq.com"
$smtpPort = 587

$username ="[email protected]"
$password = "xxxxxxxxxxx"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($From, $To, $Subject, $Body)
$SMTPClient = New-Object Net.Mail.SmtpClient($smtpServer, $SmtpPort)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($username, $password);
$SMTPClient.Send($SMTPMessage)

}

if($expire_days -lt 0 ){

$From = "[email protected]"
$To = "[email protected]"
$Subject = "域账号过期提示"
#$Body = "您的域账号已过期,请尽快修改"
$Body = "您好,
您的域帐号 密码已过期。请尽快修改!
修改方法:使用手机企业微信,打开工作台,点击IT小蜜,选择修改域账号密码。如忘记密码请在IT小蜜里选择重置域密码。

这封邮件由管理程序自动生成,请勿直接回复!"
$smtpServer = "smtp.exmail.qq.com"
$smtpPort = 587

$username ="[email protected]"
$password = "xxxxxxxxxxx"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($From, $To, $Subject, $Body)
$SMTPClient = New-Object Net.Mail.SmtpClient($smtpServer, $SmtpPort)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($username, $password);
$SMTPClient.Send($SMTPMessage)
}
}