红字需要改,以下内容保存为PS1
#For:检测AD密码过期时间并邮件通知
##############################################
Import-Module Activedirectory
$alladuser=get-aduser -searchbase "OU=yyy,DC=xxx,DC=cn" -filter * | %{$_.Samaccountname}
$userlist = @()
#################################################
#检测AD密码过期时间并邮件通知相应账户
##################################################
foreach ($user in $alladuser){
#密码最后一次更改时间
$pwdlastset=Get-ADUser $user -Properties * | %{$_.passwordlastset}
#密码的过期时间
$pwdlastday=($pwdlastset).adddays(90)
#当前时间
$now=get-date
#判断账户是否设置了永不过期
$neverexpire=get-aduser $user -Properties * |%{$_.PasswordNeverExpires}
#距离密码过期的时间
$expire_days=($pwdlastday - $now).Days
#判断过期时间天小于10天的并且没有设置密码永不过期的账户
if($expire_days -lt 3 -and $neverexpire -like "false" ){
$chineseusername= Get-ADUser $user -Properties * | %{$_.Displayname}
#邮件正文
$Emailbody=
"亲爱的 $chineseusername 同学 :
您的域账户密码即将在 $expire_days 天后过期, $pwdlastday 之后您将无法登陆xxx无线及使用MAIL、OA、WIKI等各应用系统,请您尽快更改。
更改密码地址:https://adpwd.xxxxx.cn/iisadmpwd/ (在外需要先拨×××)
重置密码后请及时修改邮件客户端的密码,以免帐号被锁。
如果有问题,请联系公司IT工程师。
"
#邮件帐号配置
$From = "it@xx.cn"
$To = "$user@xx.cn"
$Subject = "AD密码过期提醒"
$smtpServer = "mail.xx.cn"
$smtpPort = 25
$mailname = "it@xx.cn"
$password = "xxxxxxxx"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($From, $To, $Subject, $Emailbody)
$SMTPClient = New-Object Net.Mail.SmtpClient($smtpServer, $SmtpPort)
$SMTPClient.EnableSsl = $false
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($mailname, $password);
$SMTPClient.Send($SMTPMessage)
}
}
exit
加入WINDOWS计划任务