Powershell Get-EventLog一次返回一个事件

时间:2011-04-15 19:23:29

标签: powershell powershell-remoting

编辑9/26/2011:仍在寻找答案,如果您有任何想法,请发布并告诉我们!

问题摘要

当我对自己的计算机或附近的计算机运行Get-EventLog时,我看不到任何异常,一切都按预期工作。

当我对更远的计算机(108ms的平均ping)运行时,它开始以我不希望的方式行动。返回的每个事件之间存在长时间的停顿,并且完成时间过长。

以下是我正在使用的命令:

Get-EventLog -ComputerName [computername] -LogName Application -newest 100

我希望命令能够收集远程计算机上的所有信息,然后将它发送给我一堆,但它似乎并没有这样做。

当我正常执行命令并使用类似online-stopwatch的内容进行粗略测量时,结果大约为4分3秒。

当我使用以下方法测量它时:

Measure-Command {Get-EventLog -ComputerName yanhong03 -LogName Application -newest 100}

结果大约是31秒(但没有打印出任何信息)。

所以,有两个问题:

  • 为什么事件(貌似)一次检索一个?
  • 为什么使用Measure-Command实际上会改变命令完成的时间?

其他详细信息:

我正在运行powershell v2,并且正在使用Powershell ISE中的shell来执行这些命令。操作系统是Windows XP。

1 个答案:

答案 0 :(得分:1)

由于您使用的是PowerShell 2,因此您可以利用远程处理。

试试这个:

Invoke-Command -ComputerName atliis03 -ScriptBlock { Get-EventLog -LogName Application -newest 100 }

如果您正在执行许多服务器,您可能希望将该过程作为后台作业启动:

$job = Invoke-Command -ComputerName atliis03 -ScriptBlock { Get-EventLog -LogName Application -newest 100 } -AsJob

然后,您可以回来并获得结果:

Receive-Job $job

Get-Job命令将显示所有正在运行的作业的状态。

希望这有帮助。