Я не новичок в Powershell, поэтому, пожалуйста, не наказывайте меня :-)
Итак, у меня есть несколько довольно больших файлов журнала (600 МБ), которые мне нужно обработать, мой скрипт по существу удаляет те строки, которые содержат «Message Received», затем разбивает эти строки на токены и выводит несколько токенов в файл вывода. *
Логика сценария в порядке (хотя я уверен, что он мог бы быть более эффективным), но проблема в том, что когда я записываю строки в выходной файл, а затем файл постепенно увеличивается, объем используемой PowerShell памяти также увеличивается до точка истощения памяти.
Кто-нибудь может подсказать, как я могу остановить это? Я думал о том, чтобы разбить журнал на временный файл, скажем, всего 10 Мб, а затем обработать временный файл?
Вот мой код, любая помощь, которую вы, ребята, могли бы оказать, была бы фантастической: -)
Get-Date | Add-Content -Path d:\scripting\logparser\testoutput.txt
$a = Get-Content D:\scripting\logparser\importsample.txt
foreach($l in $a){
#$l | Select-String -Pattern "Message Received." | Add-Content -Path d:\scripting\logparser\testoutput.txt
if
(($l | Select-String -Pattern "Message Received." -Quiet) -eq "True")
{
#Add-Content -Path d:\scripting\logparser\testoutput.txt -value $l
$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11,$var12,$var13,$var14,$var15,$var16,$var17,$var18,$var19,$var20 = [regex]::split($l,'\s+')
Add-Content -Path d:\scripting\logparser\testoutput.txt -value $var1" "$var2" "$var3" "$var4" "$var16" "$var18
}
else
{}
}
Get-Date | Add-Content -Path d:\scripting\logparser\testoutput.txt