Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - отобрать пользователей по событию 4625 RemoteInteractive за определенную дату

Ответить
Настройки темы
PowerShell - отобрать пользователей по событию 4625 RemoteInteractive за определенную дату

Аватара для Tosha_l

Старожил


Сообщения: 277
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: Tosha_l
Дата: 18-03-2017
Добрый день, помогите пожалуйста накидать скрипт на powershell

Задача: нужно отобрать ТОП пользователей по событию 4625 RemoteInteractive (по RDP соединению) за определенную дату.
чтобы выводило имя пользователя, время, ip адрес

Отправлено: 21:45, 18-03-2017

 

Аватара для Tosha_l

Старожил


Сообщения: 277
Благодарности: 2

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$Dateinception = get-date -year 2017 -month 3 -day 1
$Dateend = get-date -year 2017 -month 3 -day 18
$Events = get-eventLog -LogName Security -Newest 10000 -after $Dateinception -before $Dateend | Where-Object { $_.EventID -eq 4625 } 
$Data = New-Object System.Management.Automation.PSObject
$Data | Add-Member NoteProperty Time ($null)
$Data | Add-Member NoteProperty UserName ($null)
$Data | Add-Member NoteProperty Address ($null)

$Events | %{

$Data.time = $_.TimeGenerated

$message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()}

$Data.UserName = ($message | ?{$_ -like "Пользователь:*"} | %{$_ -replace "^.+:."} ) 
$Data.Address = ($message | ?{$_ -like "Адрес сети источника:*"} | %{$_ -replace "^.+:."}) 

$data

}
Такой скрипт выводит таблицу, где заполнена только первая колонка с датой, а имя пользователя и адрес остается пустым, в чем может быть дело?

Отправлено: 23:31, 18-03-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Tosha_l

Старожил


Сообщения: 277
Благодарности: 2

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$Dateinception = get-date -year 2017 -month 3 -day 1
$Dateend = get-date -year 2017 -month 3 -day 18
$Events = get-eventLog -LogName Security -Newest 10000 -after $Dateinception -before $Dateend  | Where-Object { $_.EventID -eq 4625 } 
$Data = New-Object System.Management.Automation.PSObject
$Data | Add-Member NoteProperty Time ($null)
$Data | Add-Member NoteProperty UserName ($null)
$Data | Add-Member NoteProperty Address ($null)

$Events | %{

$Data.time = $_.TimeGenerated

$message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()}

$Data.UserName = ($message | ?{$_ -like "Имя учетной записи:*"} | %{$_ -replace "^.+:."} ) 
$Data.Address = ($message | ?{$_ -like "Сетевой адрес источника:*"} | %{$_ -replace "^.+:."}) 

$data

}
теперь заполняет информацию. А как сделать чтобы вывел количество повторений по пользователям (ТОП)?

Отправлено: 00:13, 19-03-2017 | #3


Аватара для Tosha_l

Старожил


Сообщения: 277
Благодарности: 2

Профиль | Отправить PM | Цитировать


Столбец UserName выводит лишние знаки (при этом содержит наименование учетной записи), т.к. скрипт ищет в логе любое соответствие параметра "Имя учетной записи:*". Т.к. данный параметр повторяется несколько раз, то выводится несколько значений, в том числе не нужных. Пока не очень представляю как это поправить.

Код: Выделить весь код
Time                                UserName                           Address                           
----                                --------                           -------                           
17.03.2017 12:04:10                 {    IO$,     oadm}                                                  
16.03.2017 17:11:43                 {    -,     USR1CV8}               -                                 
16.03.2017 17:05:45                 {    -,     USR1CV8}               -                                 
16.03.2017 16:43:51                 {    -,     USR1CV8}               -                                 
16.03.2017 15:01:14                 {    -,     USR1CV8}               -                                 
15.03.2017 21:17:56                 {    IO$,     oadm}                                                  
15.03.2017 21:17:17                 {    IO$,     oadm}                                                  
15.03.2017 21:17:17                 {    IO$,     oadm}                                                  
13.03.2017 11:52:13                 {    -,     sanya}                 -                                 
13.03.2017 11:51:56                 {    -,     sanya}                 -                                 
13.03.2017 11:51:51                 {    -,     sanya}                 -                                 
08.03.2017 12:48:08                 {    -,     Алексей}               192.168.0.55                      
08.03.2017 12:47:02                 {    -,     Алексей}               192.168.0.55                      
08.03.2017 12:45:16                 {    -,     Алексей}               192.168.0.55                      
07.03.2017 9:39:54                  {    -,     Алексей}               192.168.0.55                      
06.03.2017 9:00:14                  {    -,     itllc1}                -                                 
05.03.2017 18:26:09                 {    -,     USR1CV8}               -                                 
05.03.2017 18:18:37                 {    -,     USR1CV8}               -                                 
05.03.2017 18:13:04                 {    -,     USR1CV8}               -                                 
05.03.2017 18:09:23                 {    -,     USR1CV8}               -                                 
05.03.2017 18:04:49                 {    -,     USR1CV8}               -                                 
05.03.2017 17:59:17                 {    -,     USR1CV8}               -                                 
05.03.2017 17:45:28                 {    -,     USR1CV8}               -                                 
03.03.2017 23:52:53                 {    IO$,     администратор}                                         
03.03.2017 23:49:54                 {    IO$,     администратор$p1r1t}                                   
03.03.2017 23:49:39                 {    IO$,     администратор$p1r1t}

Отправлено: 10:08, 19-03-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Tosha_l:
…любое соответствие параметра "Имя учетной записи:*" »
Ну, а Вам какое нужно?

Вот, например, первое:
Код: Выделить весь код
$Data.UserName = (@(($message | ?{$_ -like "Имя учетной записи:*"}))[0] | %{$_ -replace "^.+:."} )
Тут проще всего — сколько бы ни было упоминаний, первое будет всегда.

Последнее:
Код: Выделить весь код
$Data.UserName = (@(($message | ?{$_ -like "Имя учетной записи:*"}))[-1] | %{$_ -replace "^.+:."} )
Аналогично: сколько бы ни было — последнее всегда будет существовать (даже когда оно же одновременно и первое).

В других случаях надо смотреть, думать. Пишите, по какому принципу Вы определяете искомое из нескольких упоминаний.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:32, 19-03-2017 | #5


Аватара для Tosha_l

Старожил


Сообщения: 277
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо, последнее то что нужно.
А каким образом отсортировать список по убываю поля UserName?

Sort-Object -Property UserName куда нужно вставить?

Отправлено: 13:41, 19-03-2017 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Tosha_l:
А каким образом отсортировать список по убываю поля UserName? »
Какой список — результирующий? Так в конец и ставьте:
Код: Выделить весь код
…
$Data.Address = ($message | ?{$_ -like "Сетевой адрес источника:*"} | %{$_ -replace "^.+:."}) 

$data
} | Sort-Object -Property UserName -Descending
А зачем по убыванию?
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:46, 19-03-2017 | #7


Аватара для Tosha_l

Старожил


Сообщения: 277
Благодарности: 2

Профиль | Отправить PM | Цитировать


Результирующий список, чтобы в этой таблице сортировка шла по имени пользователю. Чтобы отследить какой именно пользователь больше всего ошибается при авторизации
если поставить в конце | Sort-Object -Property UserName -Descending
вроде сортировка проходит, но почему то запиши только одного пользователя остаются:
Код: Выделить весь код
Time                                UserName                           Address                           
----                                --------                           -------                           
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t                                              
03.03.2017 23:49:39                     администратор$p1r1t
Причем этого пользователя раньше в списке не наблюдалось.
?

Последний раз редактировалось Tosha_l, 19-03-2017 в 14:12.


Отправлено: 13:56, 19-03-2017 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Tosha_l, плюньте мне в лицо, если это нынче именуется сортировкой по имени пользователя. Я-то полагал, что требуется группировка по имени пользователя с суммированием количества строк.

Код: Выделить весь код
…
} | Group-Object -Property UserName | Sort-Object -Property Count -Descending
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:13, 19-03-2017 | #9


Аватара для Tosha_l

Старожил


Сообщения: 277
Благодарности: 2

Профиль | Отправить PM | Цитировать


а откуда появился пользователь администратор$p1r1t, если раньше его было всего 2 записи с ним за этот период?
а как сделать так?
Цитата Iska:
Я-то полагал, что требуется группировка по имени пользователя с суммированием количества строк. »
при последнем варианте результат:

Код: Выделить весь код
Count Name                      Group                                                                    
----- ----                      -----                                                                    
   26     администратор$p1r1t   {@{Time=03.03.2017 23:49:39; UserName=    администратор$p1r1t; Address...

Отправлено: 14:22, 19-03-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - отобрать пользователей по событию 4625 RemoteInteractive за определенную дату

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Удаление информации по событию interminable Хочу все знать 26 22-02-2015 23:10
CMD/BAT - Копирование файлов по маске за текущую дату или пропуская ранее скопированные файлы jastreb83 Скриптовые языки администрирования Windows 3 19-08-2014 13:36
CMD/BAT - [решено] ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату DeGReeS Скриптовые языки администрирования Windows 8 26-08-2013 17:43
PowerShell - [решено] Копирование файлов за определенную дату tarasov.evgeny Скриптовые языки администрирования Windows 2 15-12-2010 18:32
[решено] JavaScript. Скрыть/показать элемент по событию. System Failure Вебмастеру 12 20-07-2007 12:24




 
Переход