Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1761710
  • 博文数量: 234
  • 博客积分: 4966
  • 博客等级: 上校
  • 技术积分: 3322
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-13 01:03
文章分类

全部博文(234)

文章存档

2017年(2)

2016年(1)

2015年(8)

2014年(11)

2013年(44)

2012年(27)

2011年(22)

2010年(30)

2009年(37)

2008年(6)

2007年(45)

2006年(1)

分类: WINDOWS

2013-04-23 08:24:53


 领导交待的任务,要求对域中一部分很重要的帐户进行用户状态监控,要求不高,达到如下几点:
1.用户是否禁止
2.用户密码是否过期
3.用户是否锁定
4.用户密码是否被更改过

新学了一些powershell语言,在网上东翻西凑,好不容易整出一个能用的脚本,记录一下
(初学,水平不高,大家不要笑)

脚本要求安装 Active Directory cmdlets (Quest Website):
下载地址:


点击(此处)折叠或打开

  1. Add-PSSnapin -Name Quest.ActiveRoles.ADManagement
  2. #$mycre=Get-Credential -Credential
  3. #$pw=Read-Host "Enter Password:" -AsSecureString
  4. #$conn=Connect-QADService -Service '127.0.0.1:389' -ConnectionAccount 'test.local\administrator' -ConnectionPassword $pw
  5. #Connect-QADService -Service '127.0.0.1:389' -Credential $mycre
  6. #判断用户状态函数
  7. function User_Status_Monitor([string]$user)
  8. {
  9. $stats=(Get-QADUser -Identity $user)
  10. if ($stats.AccountIsLockedOut -eq "True")
  11.     {Write-Output "$user is Locks.`n" ;1}
  12. elseif ($stats.AccountIsDisabled -eq "True")
  13.     {Write-Output "$user is Disabled.`n" ;1}
  14. elseif ($stats.AccountIsExpired -eq "True")
  15.     {Write-Output "$user is Expired.`n" ;1}
  16. elseif ($stats.PasswordAge.Days -eq "0")
  17.     {Write-Output "$user password was change today.`n" ;1}
  18. else
  19.     {Write-Output "$user user stats is normal.`n" ;0}
  20. }
  21. #检测用户状态并收集相关信息
  22. $users="test","test1","test2","test3"
  23. $users | foreach -Process {
  24. if ((User_Status_Monitor($_))[1] -eq "1") {$body+=(User_Status_Monitor($_))[0]}
  25. }
  26. #判断有没有异常消息,有则发送邮件通知
  27. if ( $body -ne $null ) { Send-MailMessage -From ***@sunwill.com.cn -To ***@sunwill.com.cn -SmtpServer mailhost -Subject "SunWill AD Users Monitors Notification" -Body $body }
  28. #Disconnect-QADService -Connection $conn


阅读(2810) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~