powershell实现域用户密码到期邮件提醒功能-创新互联

最近要实现域用户密码到期后,自动发邮件提醒的功能。感觉用powershell实现起来比较方便。

创新互联公司服务项目包括广阳网站建设、广阳网站制作、广阳网页制作以及广阳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,广阳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到广阳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

查到的资料大多都是AD和Exchange安装在一起,不实用。

下面的代码是整合了网上的资料,实际可以运行的代码。

主要参考了:http://www.nibayuan.com/2014/12/31/task-ad-password-expires-email/

http://blog.csdn.net/andrewniu/article/details/52594318

说明:

  1. 服务器为windows server 2012 r2 std 中文版

  2. 此服务器只是DC,无其它功能。

Import-Module Activedirectory
$alladuser=get-aduser -searchbase "ou=xxx,dc=xxxxx,dc=xxxx" -filter * | %{$_.Samaccountname}
#上面的“ou=***,dc=***,dc=***” 根据自己域结构实际情况填写
$userlist = @()

echo $alladuser#显示所有用户

#echo $userlist
$itmag = "xxxxx@xxxxxx.com" #IT管理员的邮件地址

function sendmail($mailaddr,$body) #定义发送邮件的方法
{
$msg=New-Object System.Net.Mail.MailMessage
$msg.To.Add($mailaddr)
#$msg.Bcc.Add($itmag)#抄送给管理员
$msg.From = New-Object System.Net.Mail.MailAddress("xxxxx@xxxxxx.com", "xxxx",[system.Text.Encoding]::GetEncoding("UTF-8"))  #发件人
$msg.Subject = "邮件密码即将过期提醒"
$msg.SubjectEncoding = [system.Text.Encoding]::GetEncoding("UTF-8")
$msg.Body =$body
#$Attachments=New-Object System.Net.Mail.Attachment("D:\Documents\xxxx.zip")#创建附件
#$msg.Attachments.add($Attachments) #添加附件,英文名可多个,中文名就只能带一个。
$msg.BodyEncoding = [system.Text.Encoding]::GetEncoding("UTF-8")
$msg.IsBodyHtml = $false#发送html格式邮件
#$msg.Priority = [System.Net.Mail.MailPriority]::High
$client = New-Object System.Net.Mail.SmtpClient("smtp.xxxxxxx.cn") #配置smtp服务器
$client.Port = 587#指定smtp端口
$client.EnableSsl = $true #带ssl功能的smtp服务器
$client.UseDefaultCredentials = $false
$client.Credentials=New-Object System.Net.NetworkCredential("xxxx@xxx.com", "*********")
try {$client.Send($msg)}
   catch [Exception]
   {$($_.Exception.Message)
   $mailaddr
   }
}

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
#判断过期时间天小于5天大于-5天(即已过期5天)的并且没有设置密码永不过期的账户
if($expire_days -lt 5 -and $expire_days -gt -5 -and $neverexpire -like "false" )
{
$chineseusername= Get-ADUser $user -Properties * | %{$_.Displayname}
#邮件正文
$Emailbody=
"Dear $chineseusername :
您的邮箱密码即将在 $expire_days 天后过期,请您尽快更改。
更改密码请遵循以下原则:
○密码长度最少 8 位;
○密码可使用最长时间 90天,过期需要更改密码;
○密码最短使用 1天( 1 天之内不能再次修改密码);
○强制密码历史 3个(不能使用之前最近使用的 3 个密码);
○密码符合复杂性需求(大写字母、小写字母、数字和符号四种中必须有三种、且密码口令中不得包括全部或部分用户名)
"

$tomailaddr = $user + "@xxxx.com"
#echo $tomailaddr
sendmail $tomailaddr $Emailbody
}

}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:powershell实现域用户密码到期邮件提醒功能-创新互联
网站网址:http://azwzsj.com/article/ceiisj.html