Arrays 不使用数组获取多个条目的数据

Arrays 不使用数组获取多个条目的数据,arrays,powershell,events,logging,Arrays,Powershell,Events,Logging,我们使用数组从日志中获取数据,这需要花费大量时间,因为它会在所有日志中搜索。我们需要每个来源的最新2个日志。这是我们现在正在使用的powershell代码 $arraylist = Get-Content C:\sources\sourceLFE2.csv; foreach($list in $arraylist) { $source1 = $list.Trim(); if([string]::IsNullOrEmpty($source1)) { continue; } if(($sour

我们使用数组从日志中获取数据,这需要花费大量时间,因为它会在所有日志中搜索。我们需要每个来源的最新2个日志。这是我们现在正在使用的powershell代码

$arraylist = Get-Content C:\sources\sourceLFE2.csv; 
foreach($list in $arraylist)
{
$source1 = $list.Trim();

if([string]::IsNullOrEmpty($source1))
{
continue;

}
if(($source1 -eq $b))
{
continue;

}
if(($source1 -eq $c))
{
continue;

}
else
{
$sourcelist = Get-EventLog -computer $computer4 -logname "lync server" -Source $source1  -EntryType "Error" ,"warning","information" -newest 1 -ErrorAction SilentlyContinue |format-table -wrap |fl  
$arraysource = $arraysource + $sourcelist; 

}
}
$arraysource | out-file -filepath $Eventfrontend;
这段代码从文本文件中获取输入,我想手动对它们进行编码以减少时间,这样我们就可以为文件中提到的每个源只获取最新的2个事件


如何减少时间,以便我们能够获取实时应用程序的日志?请帮忙

这应该更有效

$arraysource = @()

$arraylist = Get-Content C:\sources\sourceLFE2.csv; 

foreach($list in $arraylist)

{

$source1 = $list.Trim()

if([string]::IsNullOrEmpty($source1)) { continue }

if(($source1 -eq $b)) { continue }

if(($source1 -eq $c)) { continue }

$arraysource += Get-EventLog -computer $computer4 -logname "lync server" -Source $source1  -EntryType "Error" ,"warning","information" -newest 2 -ErrorAction SilentlyContinue |format-table -wrap |fl  

}

$arraysource | out-file -filepath $Eventfrontend

b美元是多少?c美元是多少?什么花了这么多时间?Get-EventLog?现在忽略$b和$c,是的,Get-EventLog命令在所有源的循环中运行时会花费很多时间。源保存在一个文本文件中,从中获取源,并为每个源返回最新的事件。我们不能做一些事情,让机器在获得第一个条目后跳转到数组中的第二个元素吗?而不是在整个事件查看器中烧焦?我知道这很容易做到,但由于我不擅长编程,所以我不知道如何做到这一点。它会更快吗?因为该命令工作正常,但在实时应用程序中使用的时间比应该使用的时间长。