Мой скрипт сообщает о ошибках событий из журнала приложений, системы и безопасности в течение 24 часов. Скрипт занимает в среднем 8 минут для запуска. Я считаю, что эти конкретные высказывания способствуют проблемы:Мой сценарий занимает слишком много времени для запуска
$Lap = Get-EventLog -computername $server -LogName $logname -after (Get-Date).AddHours(-24)
$Lap | where {$_.entryType -match "Error"} | Sort-Object eventid |
group-object eventid | Format-Table Name, Count -auto | fl |
out-string | Add-Content $eventlogfile
Если я заменяю параметр -after
с -newest
, скрипт работает быстро. Любые мысли о том, почему вышеупомянутое утверждение вносит свой вклад в выполнение сценария, которое нужно запустить?
Редактировать Проведя некоторые исследования, я узнал, что с помощью командлета get-eventlog PS анализирует весь журнал событий.
Мера, как долго это займет, чтобы определить количество ошибок приложения найденную в течение последних 24 часов Measure-Command -Expression {get-eventlog -ComputerName server123 -LogName Application -EntryType Error -after (Get-Date).AddHours(-24)}
Общее время: 54 СЕК
сосчитать, сколько ошибок приложений выписка за последние 24 часа *
$logs1 = get-eventlog -ComputerName server123 -LogName Application -EntryType Error -after (Get-Date).AddHours(-24) $logs1.count
Есть 3 ошибки
measure-command -expression {get-eventlog -ComputerName server123 -logname application -Newest 3 }
43 миллисекунды
Любые мысли о том, почему указания параметра -after
с get-eventlog
Командлет возвращает результаты гораздо дольше, чем задав параметр -newest
?
Потому что вы слишком много событий в журнале регистрации событий в течение последних 24 часов? – Neolisk
В моем приложении, системе и журнале безопасности есть менее 20,13,7 событий. – iamZel
Примерно 20 записей журнала событий - это то, что вы получаете * после * фильтрации, нет? – vonPryz