$events = New-Object System.Collections.ArrayList
Get-WinEvent -FilterHashtable @{ LogName='Security'; id=(4624); starttime=(get-date).AddMinutes(-60*24*2) } | % {
$event = New-Object psobject
$subjectUser = $_.properties[2].value + "\" + $_.properties[1].value
$targetUser = $_.properties[6].value + "\" + $_.properties[5].value
$logonType = $_.properties[8].value
$subjectComputer = $_.properties[18].value
if ($logonType -in 3,7,8,9,10,11 -and $subjectComputer -notmatch "::1|-|^127.0.0.1") {
switch ($logonType) {
3 { $logonType = "Network" }
7 { $logonType = "Screen Unlock" }
8 { $logonType = "Network Cleartext" }
9 { $logonType = "New Credentials" }
10 { $logonType = "Remote Interactive" }
11 { $logonType = "Cached Interactive" }
}
$event | Add-Member "Time" $_.TimeCreated
$event | Add-Member "Subject" $subjectUser
$event | Add-Member "LogonFrom" $subjectComputer
$event | Add-Member "LoggedAs" $targetUser
$event | Add-Member "Type" $logonType
$events.Add($event) | out-null
}
}
$events