Предостережение: не добавляя процессор в процесс, пока вызов Get-WmiObject анализирует весь журнал событий на соответствие указанному фильтру.
Ситуация: я работаю над сценарием, который удаленно выполняет некоторые проверки, а затем перезагружает компьютер,Я хочу, чтобы он проверил работоспособность после перезагрузки сервера (после некоторого времени ожидания), чтобы убедиться, что службы, которые должны были запускаться, работали.Я запускаю «автоматические» службы, которые запускаются, а затем выключаются (как и предполагалось), но затем моя текущая версия выбирает их как сбойные, если они уже запущены.Было предложено проверить журнал событий на наличие ошибок «Service Control Manager» и сообщить о них, единственная проблема теперь заключается в том, что с помощью приведенного ниже сценария у нас есть серверы, чей журнал событий может варьироваться от 20 до нескольких сотен тысяч событий.а на сервере 2k с 20K это занимает примерно 20 секунд, а процессор работает примерно на 100%, пока он работает.
Я все еще изучаю powershell / wmi, поэтому любые советы будут оценены.
function Check_Startup_Events {
BEGIN {
$time = [System.Management.ManagementDateTimeConverter]::ToDmtfDateTime((Get-Date).AddMinutes(-15))
}
PROCESS {
$results = Get-WmiObject Win32_NTLogEvent -computername $_ -Filter "LogFile='System' and SourceName='Service Control Manager' and TimeGenerated>='$time' and EventType=1" |
Format-Table -Autosize EventCode, Message
$results
}
}