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"
}
}