Всем привет.
Разумеется я уже писал что с помощью PowerShell можно легко осуществлять парсинг событий журнала безопасности.
Например так:
$Events = Get-EventLog Security | ?{$_.eventid -eq 4624}
В условия отбора можно поставить и код события, и время, и много чего еще. Более того, вы можете выполнить выборку с удаленного компьютера, и даже выполнить так называемую Подписку на интересующие вас события. Однако про Подписку позже.
С некоторой версии PowerShell появился командлет Get-WinEvent, который можно использовать не только для определения имен журналов в Windows.
В нем предыдущий запрос будет выглядеть так:
$filter = "*[System[EventID=4624]]"
Get-WinEvent -FilterXPath $filter -LogName Security
Так вот, один спец решил украсить себе жизнь и наваял скрипт который не просто парсит журнал Security, но и выделяет цветами результат. С тех пор прошло немало времени поэтому скрипт в части палитры надо поправить. Иначе на выходе получите 0.
Сейчас myscript.ps1 выглядит так:
$time = [int](New-TimeSpan ([datetime]::Today) (get-date)).TotalMilliseconds
$filter = "*[System[TimeCreated[timediff(@SystemTime) < $time] and EventID=4624] and EventData[Data[Name='LogonType']=10]]"
#for last 48 hours
#$filter = "*[System[EventID=4624 and TimeCreated[timediff(@SystemTime) <= 172800000]]]"
Get-WinEvent -FilterXPath $filter -LogName Security | Foreach {
$evt = $_
$addr = $evt.Properties[18].Value
$textcolor = $host.ui.rawui.foregroundcolor
$host.ui.rawui.foregroundcolor = "red"
if ($addr -like "::1*") {$host.ui.rawui.foregroundcolor = "DarkGreen"}
if ($addr -like "127.*") {$host.ui.rawui.foregroundcolor = "DarkBlue"}
if ($addr -like "10.*") {$host.ui.rawui.foregroundcolor = "Yellow"}
if ($addr -like "-") {$host.ui.rawui.foregroundcolor = "Magenta"}
"" | Select-Object @{n="Time";e={$evt.TimeCreated}},@{n="UserName";e={$evt.Properties[5].Value}},@{n="Address";e={$addr}}
$host.ui.rawui.foregroundcolor = $textcolor
}
Внимание, если хотите получить палитру по условиям запроса, то запускайте его только из консоли Powershell или из строки:
powershell -ExecutionPolicy bypass -File .\myscript.ps1
Как то так.
Скажу сразу, я не знаю насколько это актуально. Но сам подход меня заинтересовал. Задача периодического отслеживания активности пользователей, которые используют сервер терминалов в качестве рабочих станций. Тем более что после небольшой правки в качестве сервера терминалов можно использовать даже вашу Windows 10. При этом ваша лицензия на 10-ку не страдает.
Например так:
$Events = Get-EventLog Security | ?{$_.eventid -eq 4624}
В условия отбора можно поставить и код события, и время, и много чего еще. Более того, вы можете выполнить выборку с удаленного компьютера, и даже выполнить так называемую Подписку на интересующие вас события. Однако про Подписку позже.
С некоторой версии PowerShell появился командлет Get-WinEvent, который можно использовать не только для определения имен журналов в Windows.
В нем предыдущий запрос будет выглядеть так:
$filter = "*[System[EventID=4624]]"
Get-WinEvent -FilterXPath $filter -LogName Security
Так вот, один спец решил украсить себе жизнь и наваял скрипт который не просто парсит журнал Security, но и выделяет цветами результат. С тех пор прошло немало времени поэтому скрипт в части палитры надо поправить. Иначе на выходе получите 0.
Сейчас myscript.ps1 выглядит так:
$time = [int](New-TimeSpan ([datetime]::Today) (get-date)).TotalMilliseconds
$filter = "*[System[TimeCreated[timediff(@SystemTime) < $time] and EventID=4624] and EventData[Data[Name='LogonType']=10]]"
#for last 48 hours
#$filter = "*[System[EventID=4624 and TimeCreated[timediff(@SystemTime) <= 172800000]]]"
Get-WinEvent -FilterXPath $filter -LogName Security | Foreach {
$evt = $_
$addr = $evt.Properties[18].Value
$textcolor = $host.ui.rawui.foregroundcolor
$host.ui.rawui.foregroundcolor = "red"
if ($addr -like "::1*") {$host.ui.rawui.foregroundcolor = "DarkGreen"}
if ($addr -like "127.*") {$host.ui.rawui.foregroundcolor = "DarkBlue"}
if ($addr -like "10.*") {$host.ui.rawui.foregroundcolor = "Yellow"}
if ($addr -like "-") {$host.ui.rawui.foregroundcolor = "Magenta"}
"" | Select-Object @{n="Time";e={$evt.TimeCreated}},@{n="UserName";e={$evt.Properties[5].Value}},@{n="Address";e={$addr}}
$host.ui.rawui.foregroundcolor = $textcolor
}
Внимание, если хотите получить палитру по условиям запроса, то запускайте его только из консоли Powershell или из строки:
powershell -ExecutionPolicy bypass -File .\myscript.ps1
Как то так.
No comments:
Post a Comment
А что вы думаете по этому поводу?