Фильтр get-winevent по дате и времени
При изучении чего-либо на компьютере журналы событий - это первое, на что нужно обратить внимание. Обнаружение того, что происходит на компьютере в течение определенного периода времени, похоже на поиск иголки в стоге сена, но зачастую единственное, что возможно. поэтому я попытался справиться с этим с помощью этого кода:
$StartTimestamp ="2017-11-07 00:00:01"
$EndTimeStamp = "2017-11-08 23:59:59"
$filter = {($_.TimeCreated -ge $StartTimestamp) -and ($_.TimeCreated -le $EndTimeStamp)}
Get-ChildItem 'C:\temp\raw_data\*.evtx' |
Invoke-Parallel -ImportVariables -NoCloseOnTimeout -Throttle 10 -scriptBlock {
ForEach-Object {
Get-WinEvent -FilterHashtable @{Path=$_;} -ErrorAction SilentlyContinue |Where $filter |
ForEach-Object{
Select @{n='Time';e={$_.TimeCreated}},
@{n='Source';e={$_.ProviderName}},
@{n='EventId';e={$_.Id}},
@{n='Message';e={$_.Message}},
@{n='EventLog';e={$_.LogName}}
}
}|export-csv -NoTypeInformation -Encoding Default -Force ("c:\temp\CSV_temp\"+ $_.basename + ".csv")
}
но фильтрация на самом деле не работает. поэтому я попробовал разные подходы, чтобы получить свои результаты:
1) я изменил метки времени и переключил $StartTimestamp ="2017-11-07 00:00:01"
в $StartTimestamp ="2017-07-11 00:00:01",
я перевернул все вокруг $StartTimestamp ="11-07-2017 00:00:01"
а также "07-11-2017 00:00:01"
и использовал выходной формат TimeCreated (который 2017-11-08T08:49:21.000000000Z
) и использовал $StartTimestamp ="2017-11-08T08:49:21"
,
Кроме того, я просто использовал
Дополнительно я использовал
Get-WinEvent -FilterHashtable @{Path="c:\temp\raw_data\security.evtx";StartTime=$StartTimestamp; EndTime=$EndTimeStamp}
который работает нормально, поэтому я предполагаю, что мой формат даты правильный.