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

标签 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”的事件填充屏幕,但随后它锁定了。它永远不会退出服务器 1,也永远不会移动到服务器 2。

对正在发生的事情有什么想法吗?

对于调试,如果我在服务器本地运行它,这将起作用:

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

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

编辑:正在运行,只需大约 6-7 分钟即可完成第一个服务器。如果我想每分钟扫描一次,这将不太理想。

最佳答案

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

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 毫秒。

关于PowerShell:每分钟监控多个服务器事件日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399659/

相关文章:

c# - NCron 默认记录器写入事件日志,抛出 SecurityException

powershell - 仅在嵌套循环中跳出内循环

azure - 如何删除具有 RecoveryServicesVaults 和备份项目的 Azure 资源组

web-services - Azure 应用服务的可用性警报

kubernetes - 使用 Google Container Engine (GKE) 和 Stackdriver 监控和提醒 Pod 状态或重启

windows - 如何识别通过远程桌面连接到 Windows 服务器的用户

powershell - 如何修改文件夹的上次写入时间和上次访问

c# - 凭据存储最佳实践

Powershell - 监控文件夹内容

logging - 如何使用nlog写入关键级别的事件日志?