Очевидно, что ваш код никогда не работал так, как вы задумывали, даже с первым условием, потому что строка никогда не может соответствовать массиву строк.<string> -notmatch <array>
всегда будет иметь значение true
, даже если массив содержит точное совпадение.Вы не можете делать частичные совпадения подобным образом.
Создайте одно регулярное выражение из всех строк фильтра:
$excludes = 'account1', 'account2', 'account3', 'WRITE'
$re = ($excludes | ForEach-Object {[regex]::Escape($_)}) -join '|'
, затем отфильтруйте строки, используя это регулярное выражение:
if ($file_stream -notmatch $re) {
$_report_output.WriteLine($file_stream)
}