Для этого вы можете использовать командлет Get-WinEvent
, как показано ниже:
$user = 'The SamAccountName of the user you want to track'
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} -MaxEvents 100 |
Where-Object {$_.Properties[5].Value -eq $user } |
Select-Object -Property @{Name = 'UserName'; Expression = { $_.Properties[5].Value }},
@{Name = 'LogonTime'; Expression = { $_.TimeCreated }},
MachineName |
Out-GridView
# $_.Properties[5].Value --> TargetUserName
-MaxEvents 100
является лишь примером. Измените это значение или удалите параметр полностью, если вам нужно
Чтобы получить только 3 события, используйте параметр -MaxEvents
со значением 3. Вы также можете выбрать (последние) 3 события после этого если это то, что вам нужно, добавив -Last 3
к команде Select-Object
.
Чтобы увидеть, что массив Properties содержит для этого идентификатора события, вы можете сделать
$props = (Get-WinEvent -MaxEvents 1 -FilterHashtable @{LogName='Security';ID=4624}).Properties
for ($i = 0; $i -lt $props.Count; $i++) {
"Properties[$i].Value --> {0}" -f $props[$i].Value
}
Сравнение этого к тому, что вы можете прочитать в XML -виде eventvwr.exe:
SubjectUserSid = 0
SubjectUserName = 1
SubjectDomainName = 2
SubjectLogonId = 3
TargetUserSid = 4
TargetUserName = 5
TargetDomainName = 6
TargetLogonId = 7
LogonType = 8
LogonProcessName = 9
AuthenticationPackageName = 10
WorkstationName = 11
LogonGuid = 12
TransmittedServices = 13
LmPackageName = 14
KeyLength = 15
ProcessId = 16
ProcessName = 17
IpAddress = 18
IpPort = 19
Эти значения отличаются при запросе других событий и действительны только для LogName='Security';ID=4624