PowerShell:每分钟监视多个服务器事件日志

时间:2012-05-01 15:06:40

标签: powershell monitoring event-log

我正在开发一个PowerShell脚本,它将每分钟监视一个服务器列表并触发指定的事件。虽然我的脚本没有完成,但这是我到目前为止所做的;

$TimeAgo = (Get-Date).addMinutes(-1)
$servers = "server1","server2","server3","server4"

foreach ($server in $servers) 
{
    $events = Get-EventLog application -computername $server -after $TimeAgo

    foreach ($event in $events) 
    { 
        $event 
    }
}

foreach正在做它的工作,我可以看到来自“server1”的事件填充屏幕,但随后它就锁定了。它永远不会退出server1,它永远不会移动到server2上。

有关正在发生的事情的任何想法?

对于调试,如果我在服务器上本地运行它,则可以正常工作:

$TimeAgo = (Get-Date).addMinutes(-1)
Get-EventLog application -after $TimeAgo

当引入-ComputerName时,我得到一个闪烁的光标,它不会移动到列表中的第二个服务器上。

编辑:它正常工作,完成第一台服务器大约需要6-7分钟。如果我想每分钟扫描,这将不是理想的。

1 个答案:

答案 0 :(得分:3)

尝试使用-newest参数,然后查看新事件的结果。 -after参数解析整个日志。您可以使用measure-command测试时间以进行比较。

measure-command {get-eventlog application -comp server1 -after (get-date).addminutes(-1))}
measure-command {get-eventlog application -comp server1 -newest 1}

在远程服务器上,-after需要45秒,而-newest需要195毫秒。