gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:40:51 25 4
gpt4 key购买 nike

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

问题总结

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

当我在较远的计算机上运行它时(平均 ping 为 108ms ),它开始以我意想不到的方式运行。每个返回的事件之间有很长的停顿,完成时间过长。

这是我正在使用的命令:

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。

    最佳答案

    由于您使用的是 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 命令将显示所有正在运行的作业的状态。

    希望这可以帮助。

    关于Powershell Get-EventLog 一次返回一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681373/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com