Поскольку вы используете $_.id -in $EventID
, я понимаю, что переменная $EventID
представляет собой массив идентификаторов событий. Если нет, и это один идентификатор события, измените -in
на -eq
.
Чтобы получить дату создания в диапазоне, вы можете сделать:
$startDate = (Get-Date -Year 2020 -Month 1 -Day 7).Date # .Date makes it midnight
$endDate = (Get-Date -Year 2020 -Month 2 -Day 6).Date
Get-WinEvent -ProviderName $ProviderName -MaxEvents 64000 -ErrorAction SilentlyContinue |
Where-Object { $_.id -in $EventID -and $_.Timecreated -ge $startDate -and $_.Timecreated -lt $endDate } |
Sort-Object TimeCreated -Descending | Export-Csv $Path -NoTypeInformation
Видя, что было некоторое недопонимание относительно использования .Date
, небольшое объяснение:
Использование свойства .Date
означает, что вы отбрасываете текущее время и получаете дату в полночь, потому что в этот момент дата меняется.
Приведенный выше код будет фильтровать между датой начала включительно и датой окончания эксклюзивно , поэтому все события создаются с января. 7 2020 00: 00: 00 до, , но не включая Фев. 6 2020 будет возвращено.
В этом случае последнее возвращенное событие может быть в фев. 5 2020 23: 59: 59 .
Если вы хотите, чтобы события возвращались к , включая дату окончания, просто добавьте к ней 1 день, как в
$endDate = (Get-Date -Year 2020 -Month 2 -Day 6).Date.AddDays(1)
Теперь все события созданы с Янв. 7 2020 00: 00: 00 до, , но не включая Фев. 7 2020 будут возвращены. (включая все события, произошедшие 6 февраля 2020 года).
В этом случае последнее возвращенное событие может быть в февраля. 6 2020 23: 59: 59 .
Надеюсь, что это объяснит.