红字需要改,以下内容保存为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计划任务

AD密码到期提醒POWERSHELL优化版本。_AD密码  邮件提醒