Удаленный запрос нескольких серверов с помощью 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 ;
}