Заметки IT Менеджера

14.02.2013

Автоматическое уведомление о заблокированных аккаунтах


powershell_21Откопал интересный скриптик, с помощью которого можно оперативно получать уведомление о заблокированном аккаунте. Почитав комментарии, чуть чуть его изменил, чтобы он быстрее работал и не выдавал ошибок.

Сам скрипт кладется на домен контроллер, там же запускается Task Scheduler и в нес создается задача с триггером на EventID: 4740 в Security Log и действием, содержащим запуск C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe с параметром в виде пути к скрипту и его именем, например, C:\cmd\account-lockout-notification.ps1

 
 
 

#Отсылка сообщений о блокировании аккаунтов
$Event=Get-EventLog -LogName Security -InstanceId 4740 -Newest 1 -ErrorAction SilentlyContinue
$MailBody= $Event.message

$MailSubject= "User Account locked out"
$SmtpClient = New-Object system.net.mail.smtpClient
$SmtpClient.host = "smtp.domain.com"
$MailMessage = New-Object system.net.mail.mailmessage
$MailMessage.from = "AcctLockNotify@domain.com"
$MailMessage.To.add("it@domain.com")
$MailMessage.IsBodyHtml = 1
$MailMessage.Subject = $MailSubject
$MailMessage.Body = $MailBody
$SmtpClient.Send($MailMessage)

6 комментариев »

  1. Доброго времени суток, а для 2003 винды есть, что нить подобное?
    спасибо.

    комментарий от Demon — 25.02.2013 @ 13:28 | Ответить

    • В случае 2003 сервера нужно переделать:
      1. Сделать событие запускающее скрипт раз в 5-10 минут
      2. В самом скрипте сделать выборку не последнее событие, а события за последние 6-11 минут
      3. Ну и отправку делать, если количество этих событий больше нуля

      Кстати, чуть позже будет другая версия этого скрипта, там вывод красивее и удобочитаемее. Ну и самих скриптов будет пачка, для разных полезных событий :-)

      комментарий от itpadla — 25.02.2013 @ 14:59 | Ответить

  2. Доброй день, а что именно нужно переделать? и как запустить. C PowerShell-ом к сожелению не знаком :(

    комментарий от Demon — 26.02.2013 @ 05:09 | Ответить

    • Если говорить об этом скрипте, то меняете соответсвующий кусок на
      $Event=Get-EventLog -LogName Security -InstanceId 4740 -ErrorAction SilentlyContinue -Before (Get-Date).date -After (Get-Date).AddMinutes(-6)
      Затем делается cmd с содержимым
      C:\WINDOWS\system32\WindowsPowerShell\v1.0\PowerShell.exe -PSConsoleFile «C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1» -command «. ‘c:\cmd\account-lock-notification.ps1′» -NonInteractive -nologo
      На путь с указанием 1.0 не обращайте внимания, это исторический рудимент. PS должен стоять не ниже 2.0

      P.S. А с PowerShell рекомендую познакомиться. Он сильно облегчает жизнь, в некоторых случаях просто необходим, а с учетом тенденций от MS уже переходит в состояние обязательно требуется.
      Для начала, рекомендую посмотреть в сторону PowerGUI и PowerShell Commands for Active Directory от компании Quest. Очень полезная вещь, бесплатная и работает с Windows Server 2003. Я с помощью несложных скриптов, в свое время, себе весь AD «причесал». Описания, города, адреса, телефоны и т.д.

      комментарий от itpadla — 26.02.2013 @ 09:00 | Ответить

  3. 1 качаю power shell
    2 ставлю на любой КД в сети
    3 сохраняю cmd, запускаю и смотрю что происходит :)

    комментарий от Demon — 26.02.2013 @ 10:47 | Ответить

  4. […] я публиковал заметку Автоматическое уведомление о заблокированных аккаунт…. Там было вполне рабочее решение, но у него был один […]

    Уведомление от Оперативный контроль аккаунтов пользователей и компьютеров в Active Directory | Заметки IT Менеджера — 12.03.2013 @ 11:16 | Ответить


RSS feed for comments on this post. TrackBack URI

Оставьте комментарий

Блог на WordPress.com.