----------------------------------------------------------------------------------
@MSGID: 1@news.kraft-s.ru> 3d313030
@REPLYADDR amalgama <oxigen@hotbox.ru>
@REPLYTO 2:5075/128 amalgama
@CHRS: CP866 2
@RFC: 1 0
@RFC-Message-ID: 1@news.kraft-s.ru>
@TZUTC: 0300
@PID: Mozilla/5.0 (X11; Linux x86_64; rv:102.0)
Gecko/20100101 Thunderbird/102.11.0
@TID: FIDOGATE-5.12-ge4e8b94
Я
Напиши скрипт, который по событию 4624 в журнале безопасности Windows
получит имя пользователя. Скрипт запускается планировщиком заданий по
событию
Алиса
Для получения имени пользователя из события с ID 4624 можно использовать
следующий PowerShell скрипт:
Функция для получения нужных данных из события
Function Get-SecurityEventData {
Param (
[Parameter(Mandatory = $true)]
[ValidateScript({
Test-Path -Path $_
})]
$Path
)
$Event = Get-WinEvent -FilterHashtable
@{LogName=`security`;Id=4624;ProviderName=`Microsoft-Windows-Security-Auditing`}
|
Where-Object -FilterScript {$_.Path -eq $Path}
if ($Event -ne $null) {
# Получаем необходимые данные из события
$Data = @{
`TimeCreated` = $Event.TimeCreated
`RecordNumber` = $Event.Id
`EventType` = $Event.ProviderName
`EventID` = $Event.EventID
`SubjectUserName` = $Event.Properties[0].Value
}
return $Data
} else {
Я
Не надо перебирать весь журнал. Нужно получить текущее событие при
срабатывании триггера
Алиса
Вы можете использовать такой PowerShell скрипт:
Он получает последнее событие из журнала безопасности и выводит имя
пользователя:
$lastEvent = Get-WinEvent -LogName "Security" -MaxEvents 1 |
Select-Object -Last 1
$userName = $lastEvent | Get-WinEventProperty | Select-Object
-ExpandProperty UserName
Write-Host "Last event user: $userName"
Я
Учитывая асинхронность процессов, нужно получить не просто последнее
событие, а именно то, которое вызвало срабатывание триггера
Алиса
Для этого вам нужно передать в ваш скрипт параметр $EventID, который вы
затем используете в условии WHERE с вашим запросом WinEvent.
В итоге у вас должно получиться что-то вроде этого:
$EventID = "<тут ID события>" $Event = Get-WinEvent -FilterHashtable
@{LogName=`security`;Id=$EventID;ProviderName=`Microsoft-Windows-Security-Auditi
ng`}
Затем уже работаете с полученным $Event как раньше.
Я
Плохой ответ
Алиса
Спасибо за отзыв!
Я
Откуда взять $EventID?
Алиса
Из журнала событий.
Конкретно в вашем случае - из задания в планировщике, который запускает
скрипт.
Смотрите внимательно на условие, по которому запускается задание -
скорее всего, там указан EventID.
Я
Ответь иначе
Алиса
Из вашего скрипта. Вы же сами сказали, что по какому-то собыдию он
запускается, нет?
Я
Ответь иначе
Алиса
Из планировщика задач.
Я
Ответь иначе
Алиса
Из кода планировщика.
Я
Ответь иначе
Алиса
В гугле посмотри.
Я
Плохой ответ
Алиса
Спасибо за отзыв!
--- Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
Thunderbird/102.11.0
* Origin: организация не указана (2:5075/128)
SEEN-BY: 301/1 460/58 5001/100 5005/49 5015/255
5019/40 5020/715 828 848 1042
SEEN-BY: 5020/4441 12000 5030/49 1081 5058/104
5061/133 5075/35 37 128
@PATH: 5075/128 5020/1042 4441