Я хотел бы упомянуть альтернативу Get-EventLog: Get-WinEvent
Обычно он имеет гораздо лучшую производительность, как локально, так и по сети, он может работать на серверебоковая фильтрация с -FilterHashTable
перед отправкой результатов.Это может пригодиться, поскольку журналы Active Directory иногда могут быть довольно большими.
Поскольку вас интересует только то,> 5 результатов или нет, мы также можем ускорить его, прерывая работу раньше, когда найдем 6результаты, используя -MaxEvents
, а затем просто проверьте, нашли ли мы 6 событий или нет.
$maxEvents = 6
$filterHashtable = @{
LogName = 'Security'
Id = 4625
StartTime = (Get-Date).AddDays(-60)
}
$log = Get-WinEvent -FilterHashtable $filterHashtable -MaxEvents $maxEvents
if ($log.Count -ge $maxEvents) {
#your code here
Для удобства чтения я предпочитаю иметь хеш-таблицу в переменной, но она также может быть записана встроенным образом, как это,с ;
в качестве разделителя для пар ключ-значение:
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = ... }