Фильтр 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}

который работает нормально, поэтому я предполагаю, что мой формат даты правильный.

0 ответов

Другие вопросы по тегам