Powershell Get_EventLog для нескольких серверов

Я SQL DBA, n00b для Powershell, на данный момент выполняю обязанности системного администратора.

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

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

 $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 сделает так, что вы будете пытаться запрашивать только те серверы, которые отвечают на пинг, а затем 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"
 }

}
Другие вопросы по тегам