使用PowerShell中的Get-EventLog远程查询多个服务器

时间:2014-01-21 15:45:32

标签: 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 个答案:

答案 0 :(得分:2)

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