环境 AD 域服务器 Windows 2012 R2,Exchange
首先定制脚本,本脚本是参考网上一些资料然后进行改良的,3000用户的域执行约1分钟。
参考文章 http://lixiaosong.blog.51cto.com/705126/1409113/
这篇文章中的脚本如果直接放域里执行肯定会有问题,还有就是它的效率很低。
因为它在循环语句中多次执行 Get-ADUser,每执行一次必消耗额定时间。
如果企业中有3000用户,运行一次要执行12000次Get-ADUser。
我这边测试,在不执行发送邮件命令下,等待执行约半个多小时,并且还有大量报错
错误大致分为部分用户 pwdlastset 为空等两类错误
改版:
排除没必要通知的用户
直接读取用户的密码过期时间
Get-ADUser 全脚本仅执行一次并筛选好
循环中仅作判断及发送邮件
Import-Module Activedirectory
#指定域中指定OU下的用户
#排除已禁用、密码永不过期、显示名为空、无邮箱、帐户不能修改密码的帐户
#排除已经过期的用户(因为已经不能登录了,发邮件通知毫无意义)
$allUsers = Get-ADUser -SearchBase "OU=AllUsers,DC=zzy,DC=my" -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties DisplayName,PasswordExpired,mail,CannotChangePassword,"msDS-UserPasswordExpi