Сопоставление чего-либо с тысячами регулярных выражений в цикле всегда будет работать плохо.Объедините ваши отдельные регулярные выражения в одно
$re = $SearchList -join '|'
и используйте его следующим образом:
(Get-Content $CSVFile) -match $re
или вот так (если входной файл слишком велик, чтобы поместиться в память):
Get-Content $CSVFile | Where-Object { $_ -match $re }
Если у вас слишком много отдельных регулярных выражений, чтобы поместиться в одно большое, вам нужно найти способ уменьшить их количество или объединить несколько из них в более мелкие, более общие.Чтобы помочь вам с этим, вам нужно предоставить нам репрезентативную выборку выражений, с которыми вы хотите сопоставить.