2016-12-02 3 views
0

Я SQL DBA, n00b в Powershell, поставлена ​​задача системного администратора пошлин на данный моментPowershell Get_EventLog для нескольких серверов

Мне нужно запросить журналы ошибок через мои серверы на наличие ошибок и предупреждений.

Используя свой собственный Google-фу и помощь this нить я был в состоянии получить эту работу:

$computers = Get-Content "C:\Servers\ServerList_Short.txt"; 

# QUERY COMPUTER SYSTEM EVENT LOG 
foreach($computer in $computers) 

{   
    Get-EventLog -ComputerName $computer -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-7) ` 
    | Select-Object -Property machineName, EntryType, EventID, TimeGenerated, Message ` 
    | Format-Table -Property MachineName, TimeGenerated, EntryType, Source, Message -AutoSize ; 

} 

Что я отсутствующий в данный момент, как ловушка для сервера в моем .txt файл, вне форума, игнорировать его и перейти к следующему. После этого, я буду работать, чтобы свалить все это на SQL таблицы, results.txt и т.д.

Спасибо за любую помощь :)]

Kevin3NF

ответ

1

Есть несколько различных способов обработайте это, но я бы рекомендовал комбинировать Test-Connection с Try/Catch, Test-Connection сделает это так, чтобы вы только пытались запросить серверы, которые отвечали на ping, а затем Try/Catch будет обрабатывать любые другие ошибки, которые могут возникнуть.

foreach($computer in $computers) 

{   
if(Test-Connection $computer -Quiet -Count 1){ 
    Try { 
     Get-EventLog -ComputerName $computer -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-7) ` 
    | Select-Object -Property machineName, EntryType, EventID, TimeGenerated, Message ` 
    | Format-Table -Property MachineName, TimeGenerated, EntryType, Source, Message -AutoSize 
    } Catch { 
     Write-Verbose "Error $($error[0]) encountered when attempting to get events from $computer" 
    } 
} else { 
    Write-Verbose "Failed to connect to $computer" 
} 

} 
+0

спасибо! У меня есть 3 списка серверов для тестирования, один не существует. Получил это после хороших результатов: Test-Connection: не удалось проверить аргумент в параметре «Имя_компьютера». Аргумент пустой или пустой. Поставьте аргумент, который не является нулевым или пустым, а затем снова попробуйте команду . – Kevin3NF

+1

Ошибка означает, что у вас есть пустая строка в конце вашего файла, вы можете ее преодолеть, отредактировав nesting nad, поставив 'test-connection' внутри' try/catch' или просто убедитесь, что ваш файл не имеет пустые строки в конце, либо на front-end, либо путем выполнения '$ computers = $ computers | Where-object {$ _} ', который будет elminate нулевые значения из вашего массива –

+0

Perfect ... должен был иметь CR; LF ... удалил это, побежал против моего полного списка серверов, и это сработало ... спасибо !!! – Kevin3NF

Смежные вопросы