我正在为我的早晨例程编写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 ;
}
答案 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 ;
}