KRAFT.TALKS-------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 33 из 100
 От   : amalgama                            2:5075/128        29 сен 23 18:47:42
 К    : All                                                   29 сен 23 18:53:02
 Тема : Обиделась...
----------------------------------------------------------------------------------
                                                                                 
@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



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх