Logging 远程收集windows事件日志的方法?
有没有比wmi更快的方法可以使用powershell远程收集windows事件日志? 如果没有,我们如何进行有效的多线程wmi查询以从多个主机收集日志?查看Logging 远程收集windows事件日志的方法?,logging,wmi,powershell-2.0,Logging,Wmi,Powershell 2.0,有没有比wmi更快的方法可以使用powershell远程收集windows事件日志? 如果没有,我们如何进行有效的多线程wmi查询以从多个主机收集日志?查看 Get-EventLog 您可以在作业中启动它以对其进行多线程处理: Start-Job -ArgumentList $HostName { return $(Get-EventLog -ComputerName "$($args[0])" -LogName Application -Source "Source Name") } 然后
Get-EventLog
您可以在作业中启动它以对其进行多线程处理:
Start-Job -ArgumentList $HostName { return $(Get-EventLog -ComputerName "$($args[0])" -LogName Application -Source "Source Name") }
然后收集所有数据:
$Logs = $(Get-Job | Wait-Job | Receive-Job)
看起来是这样的:
foreach($HostName in $Hosts) {
Start-Job -ArgumentList $HostName { return $(Get-EventLog -ComputerName "$($args[0])" -LogName Application -Source "Source Name") }
}
$Logs = $(Get-Job | Wait-Job | Receive-Job)
get eventlog不提供凭据参数,因此我得到了“未经授权的尝试”错误。另一种方法是使用invoke命令,但它使用http,速度很慢。不幸的是,invoke命令将是最好的选择。如果并行运行它们,开销就不会那么明显了。您还可以使用WMI和多线程,以使用作业的相同方式使用它们。