编辑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秒(但没有打印出任何信息)。
所以,有两个问题:
其他详细信息:
我正在运行powershell v2,并且正在使用Powershell ISE中的shell来执行这些命令。操作系统是Windows XP。
答案 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命令将显示所有正在运行的作业的状态。
希望这有帮助。