###########################################

#For:检测AD密码过期时间并邮件通知
##############################################
Import-Module Activedirectory
$alladuser=get-aduser -searchbase "DC=cn,DC=com" -filter * | %{$_.Samaccountname}

$userlist = @()
#################################################
#检测AD密码过期时间并邮件通知相应账户
##################################################
foreach ($user in $alladuser){
write-host $user
#密码最后一次更改时间
$pwdlastset=Get-ADUser $user -Properties | %{$_.passwordlastset}
#密码的过期时间
$pwdlastday=($pwdlastset).adddays(90)
#当前时间
$now=get-date
#判断账户是否设置了永不过期
$neverexpire=get-aduser $user -Properties
|%{$_.PasswordNeverExpires}
#距离密码过期的时间
$expire_days=($pwdlastday - $now).Days
#判断过期时间天小于3天大于2天并且没有设置密码永不过期的账户,然后设置定时任务,如果时间不设置区间的话,设置为小于三天的过期用户,回被连续三天发送邮件
if($expire_days -le 3 -and $expiredays -gt 2 ){
if($neverexpire -like "false"){
$chineseusername= Get-ADUser $user -Properties * | %{$
.Displayname}
#邮件正文
$Emailbody=
"亲爱的 $chineseusername 同学 :
您的域账户和邮箱密码即将在 $expire_days 天后过期, $pwdlastday 之后您将无法登陆计算机和收发邮件,请您尽快更改。
重置密码过程请遵循以下原则:
○密码长度最少 8 位;
○密码可使用最长时间 90天,过期需要更改密码;
○密码符合复杂性需求(大写字母、小写字母、数字和符号四种中必须有三种)
"
#$u.mail表示收件人身份
$u= get-aduser $user -Properties mail
write-host $u.mail
Send-MailMessage -from '发件人' -to $u.mail -subject "您的账户密码即将过期" -body $Emailbody -smtpserver 服务器地址 -Encoding ([System.Text.Encoding]::UTF8)
}
}
}