Удаленный запрос нескольких серверов с помощью Get-EventLog в PowerShell

Я пишу сценарий PowerShell для моей утренней рутины. Я хочу вытащить только предупреждения и ошибки из списка удаленных серверов. В настоящее время я получаю только предупреждения или ошибки. Я не уверен, как получить оба. Как только я извлекаю информацию, она не включает сервер. Мой запрос ниже:

# SERVER LIST PROPERTIES
# Get computer list to check disk space. This is just a plain text file with the servers listed out.
 $computers = Get-Content "C:\MorningChecks.txt"; 

# QUERY COMPUTER SYSTEM EVENT LOG
foreach($computer in $computers)
{
 Get-EventLog -LogName System -EntryType Error -After (Get-Date).Adddays(-1) | Format-Table -Wrap ;
}

1 ответ

-EntryType Параметр принимает массив строк для фильтрации.

Поэтому для фильтрации только по ошибкам вы должны использовать параметр:

Get-EventLog -LogName System -EntryType Error -After (Get-Date).Adddays(-1) 

Чтобы отфильтровать ошибки и предупреждения:

Get-EventLog -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-1) 

Чтобы получить имя компьютера, вы должны добавить его к -Property параметр в конце Format-Table:

Format-Table -Wrap -Property MachineName, Index, TimeGenerated, EntryType, Source, InstanceID, Message -AutoSize

-- Редактировать

Чтобы ответить на ваш вопрос об имени машины, показывающей вашу собственную машину, это потому, что когда вы запускаете Get-EventLog вы просто запускаете его для своей локальной машины. Вы забыли указать -ComputerName параметр в вашем foreach петля. Ваш цикл foreach должен выглядеть так:

foreach($computer in $computers)
{
 Get-EventLog -ComputerName $computer -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-1) | Format-Table -Wrap -Property MachineName, Index, TimeGenerated, EntryType, Source, InstanceID, Message -AutoSize ;
}
Другие вопросы по тегам