|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Аудит AD |
|
PowerShell - [решено] Аудит AD
|
Старожил Сообщения: 208 |
Спасибо за отзывы в теме, но что-то готовые решения аудита оказались очень дорогими.
В итоге решил попробовать сделать подобное скриптом. Как включить аудит для стандартных телодвижений в AD написано тут В инете был найден скрипт и слегка модифицирован: $objExcel = New-Object -comobject Excel.Application $objExcel.visible = $True $objWorkbook = $objExcel.Workbooks.Add() $objSheet = $objWorkbook.Worksheets.Item(1) $objSheet.Cells.Item(1,1) = "Server" $objSheet.Cells.Item(1,2) = "LogName" $objSheet.Cells.Item(1,3) = "Time" $objSheet.Cells.Item(1,4) = "Source" $objSheet.Cells.Item(1,5) = "EventID" $objSheet.Cells.Item(1,6) = "Message" $objSheet.Cells.Item(1,7) = "UserName" $objSheetFormat = $objSheet.UsedRange $objSheetFormat.Interior.ColorIndex = 19 $objSheetFormat.Font.ColorIndex = 11 $objSheetFormat.Font.Bold = $True $row = 1 $servers = Get-Content D:\scripts\ps\servers.txt foreach ($server in $servers) { $row = $row + 1 #$AppLog = Get-EventLog -LogName Application -computer $server -Newest 5 $SecLog = Get-EventLog -LogName Security -ComputerName $server -Newest 10 -ea SilentlyContinue | where {$_.EventID -eq 4624} #$SysLog = Get-EventLog -LogName System -computer $server -Newest 5 #foreach ($cat in $AppLog,$Syslog,$Seclog) foreach ($cat in $SecLog) { #if ($cat -is [array]) #{ #if ($AppLog -contains $cat[0]) {$Catname = "Application"} if ($SecLog -contains $cat[0]) {$Catname = "Security"} #if ($SysLog -contains $cat[0]) {$Catname = "System"} Foreach ($event in $cat) { $objSheet.Cells.Item($row,1).Font.Bold = $True $objSheet.Cells.Item($row,1) = $server $objSheet.Cells.Item($row,2) = $Catname $objSheet.Cells.Item($row,3) = $Event.TimeGenerated $objSheet.Cells.Item($row,4) = $Event.Source $objSheet.Cells.Item($row,5) = $Event.EventID $objSheet.Cells.Item($row,6) = $Event.Message #$objSheet.Cells.Item($row,7) = $Event.Message | where {$_ -match "(\s|^)Account\sName"} #Select-String "Account" $row = $row + 1 } #} } } $objSheetFormat = $objSheet.UsedRange $objSheetFormat.EntireColumn.AutoFit() $objSheetFormat.RowHeight = 15 В процессе написания возникла проблема, которую пока не удалось решить. Надо что бы в таблице было ещё одно поле, userName, что бы можно было сразу посмотреть, когда последний раз осуществляла логин какая-то учётка. Для примера вот кусок сообщения $Event.Message от EventID=4624 Цитата:
Подскажите пожалуйста, как это можно реализовать? |
||
Отправлено: 16:28, 22-05-2014 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $objSheet.Cells.Item($row,7) = $Event.ReplacementStrings[5]
|
Отправлено: 17:05, 22-05-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Большое спасибо!! То что нужно.
|
Отправлено: 09:31, 23-05-2014 | #3 |
Новый участник Сообщения: 21
|
Профиль | Сайт | Отправить PM | Цитировать Как целиком теперь выглядит решение и куда его вставить чтоб заработало? новичек ))
|
Отправлено: 18:42, 14-07-2014 | #4 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Выкладываю данный скрипт аудита, я пользуюсь им постоянно, при желании можно под себя заточить.
|
|
Отправлено: 14:45, 15-07-2014 | #5 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Интересный, годный скрипт.
Я немного не в тему, но информация, может быть, будет полезной для аудита, которую можно использовать в дальнейшем. У себя в домене я реализовал такую фичу: Через GPO (нацеленную только на клиентские ОС по WMI фильтру) прописал в логон скрипт код на vb: On Error Resume Next Dim adsinfo, ThisComp, oUser Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) Thiscomp.put "description", "Выход: " + oUser.cn + " " + CStr(Now) ThisComp.Setinfo On Error Resume Next Dim adsinfo, ThisComp, oUser Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) Thiscomp.put "description", "Вход: " + oUser.cn + " " + CStr(Now) ThisComp.Setinfo В поле Description (которое потом можно использовать для каких-нибудь отчетов) компьютера в AD имеем что-то типа "Вход: Иван Иванович Иванов 16.07.2014 9:03:32" или "Выход:... Бла бла бла" Куски скрипта где-то стащил, переделал под себя. А так, достаточно наглядно и эффективно. |
Отправлено: 09:20, 16-07-2014 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Главное в ентом деле, чтоб связь не терялась, машины не зависали и свет не выключался
![]() |
Отправлено: 10:23, 16-07-2014 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2008 R2 - Аудит AD | pogo | Windows Server 2008/2008 R2 | 4 | 20-05-2014 15:35 | |
Аудит в домене | clin | Microsoft Windows NT/2000/2003 | 1 | 16-07-2009 13:26 | |
Аудит | clin | Microsoft Windows NT/2000/2003 | 3 | 19-06-2009 10:57 | |
Аудит ! | Kobzar | Microsoft Windows NT/2000/2003 | 3 | 26-11-2008 12:50 | |
Аудит событий | GreenIce | Microsoft Windows NT/2000/2003 | 0 | 14-05-2007 22:40 |
|