我正在开发一个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分钟。如果我想每分钟扫描,这将不是理想的。
答案 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毫秒。