Как вытащить ряд сбойных служб с удаленного сервера после перезагрузки - PullRequest
1 голос
/ 08 июля 2010

Предостережение: не добавляя процессор в процесс, пока вызов 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
    }

}

1 Ответ

0 голосов
/ 09 июля 2010
$results = Get-EventLog -ComputerName w2kserver -LogName System -After $time
foreach ($result in $results){
if ($result.Source -eq "Service Control Manager" -and $result.EntryType -eq "Error"){
Write-Host $_.Description}}

Я запустил это для большого журнала событий 60 КБ на W2K-сервере в нашей среде.Запуск занимает некоторое время, но выполняется локально и не облагает налогом сервер.Не уверен, как вы хотите выводить данные, но я думаю, что Get-EventLog будет делать то, что вы хотите.

...