xywuyiba7 发表于 2018-9-2 06:41:40

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

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


niskl1 发表于 2018-12-11 15:35:15

很赞,很实用的
页: [1]
查看完整版本: AD密码到期提醒POWERSHELL优化版本。