【问题标题】:PowerShell: Monitor multiple server event logs every minutePowerShell:每分钟监控多个服务器事件日志
【发布时间】:2012-05-01 15:06:39
【问题描述】:

我正在编写一个 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 分钟。如果我想每分钟扫描一次,这并不理想。

【问题讨论】:

    标签: powershell monitoring event-log


    【解决方案1】:

    尝试使用 -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 毫秒。

    【讨论】:

    • 这正是我现在正在做的。我正在使用 -newest 50,然后使用 if 语句查看事件 TimeGenerated 是否在最后 60 秒内。谢谢!
    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多