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

PowerShell:每分钟监视多个服务器事件日志,powershell,monitoring,event-log,Powershell,Monitoring,Event Log,我正在编写一个PowerShell脚本,该脚本将每分钟监视一个服务器列表,并在指定事件时触发。虽然我的脚本还没有完成,但到目前为止我已经完成了 $TimeAgo = (Get-Date).addMinutes(-1) $servers = "server1","server2","server3","server4" foreach ($server in $servers) { $events = Get-EventLog application -computername $se

我正在编写一个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”的事件填充屏幕,但随后它锁定了。它从未退出服务器1,也从未移动到服务器2

有什么想法吗

为了进行调试,如果我在服务器上本地运行它,则可以执行此操作:

$TimeAgo = (Get-Date).addMinutes(-1)
Get-EventLog application -after $TimeAgo
当引入-ComputerName时,我得到一个闪烁的光标,它不会移动到列表中的第二个服务器上


编辑:它正在工作,完成第一台服务器只需6-7分钟。如果我想每分钟扫描一次,这就不太理想了

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

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

在这里的远程服务器上,-after花了45秒,最新的花了195毫秒。

这正是我现在正在做的。我使用-newest 50,然后使用if语句查看生成的事件TimeGenerated是否在最后60秒内。谢谢