powershell实现域用户密码到期邮件提醒功能

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

查到的资料大多都是广告和交换安装在一起,不实用。

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

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

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


说明:

<李>

服务器为windows server 2012 r2性病中文版

<李>

此服务器只是直流,无其它功能。



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

echo $ alladuser #显示所有用户

#回声userlist
itmag美元=皒xxxx@xxxxxx.com”#管理员的邮件地址

sendmail函数(mailaddr,身体美元)#定义发送邮件的方法
{,
$味精=新对象System.Net.Mail。MailMessage,
msg.To.Add美元($ mailaddr),
# msg.Bcc.Add美元($ itmag) #抄送给管理员
美元味精。从=新对象System.Net.Mail.MailAddress (“xxxxx@xxxxxx.com”、“xxxx”, [system.Text.Encoding]:: GetEncoding (“utf - 8”)),,#发件人
美元味精。主题="邮件密码即将过期提醒”,
美元味精。SubjectEncoding=[system.Text.Encoding]:: GetEncoding (utf - 8),
美元味精。身体=$身体,
# $附件=新对象System.Net.Mail.Attachment (“D: \ \ xxxx.zip文档”)#创建附件,
# msg.Attachments.add美元($附件)#添加附件,英文名可多个,中文名就只能带一个,
美元味精。BodyEncoding=[system.Text.Encoding]:: GetEncoding (utf - 8),
美元味精。IsBodyHtml=$ #发假送html格式邮件,
# $味精。优先级=[System.Net.Mail。MailPriority]::高,
$客户=新对象System.Net.Mail.SmtpClient (“smtp.xxxxxxx.cn”),#配置smtp服务器
美元客户端。端口=587 #指定smtp端口
美元客户端。EnableSsl真正=$ #带ssl功能的smtp服务器
美元客户端。UseDefaultCredentials=假美元,美元
客户端。凭证=新对象System.Net.NetworkCredential (“xxxx@xxx.com”、“* * * * * * * * *”),
尝试{$ client.Send (msg)美元},
,,,抓住(异常)
,,,{$ (_.Exception.Message美元),
,,,美元mailaddr,
,,,}
},


foreach(用户alladuser美元)
{
#密码最后一次更改时间
$ pwdlastset=Get-ADUser $ user属性* | % {$ _。passwordlastset}
#密码的过期时间
pwdlastday=pwdlastset.AddDays美元(90)
#当前时间
现在美元=get-date
#判断账户是否设置了永不过期
$ neverexpire=get-aduser $ user属性* | % {$ _。PasswordNeverExpires}
#距离密码过期的时间
$ expire_days=(pwdlastday -现在美元)。天
#判断过期时间天小于5天大于5天(即已过期5天)的并且没有设置密码永不过期的账户
if ($ expire_days lt 5美元——expire_days gt 5美元——neverexpire——“假”)
{
chineseusername=Get-ADUser user 美元;属性* | % {$ _。Displayname}
#邮件正文
$ Emailbody=
“亲爱的chineseusername美元:
您的邮箱密码即将在美元expire_days天后过期,请您尽快更改。
更改密码请遵循以下原则:
○密码长度最少8位;
○密码可使用最长时间90天,过期需要更改密码;
○密码最短使用1天(1天之内不能再次修改密码),
○强制密码历史3个(不能使用之前最近使用的3个密码),
○密码符合复杂性需求(大写字母,小写字母,数字和符号四种中必须有三种,且密码口令中不得包括全部或部分用户名)
"

tomailaddr=用户+美元“@xxxx.com”
# echo $ tomailaddr
sendmail tomailaddr Emailbody美元
}

}

powershell实现域用户密码到期邮件提醒功能