Как добавить условия из переменной в Powershell?

Я хотел бы добавить входную переменную, которая позволила бы мне добавлять столько условий, сколько я хочу.

Пример: переменная для добавления -and ($_ -notmatch '67'

      $file = "\Input\27532.csv"
$outFile = "\Output\27532.csv"

$content= Get-Content $file | Where-Object { ($_ -notmatch '24') -and ($_ -notmatch '67')  } | Set-Content $outfile

1 ответ

Решение

Используйте один -notmatchоперация с чередованием регулярных выражений ( |), что позволяет передавать неограниченное количество подстрок:

      $valuesToExclude = '24', '67', '42'

$content= Get-Content $file | 
  Where-Object { $_ -notmatch ($valuesToExclude -join '|') } | 
   Set-Content $outfile

Примечание. Приведенное выше предполагает, что $valuesToExcludeсодержит только значения, не содержащие метасимволов регулярных выражений (например, .); если есть шанс, и вы хотите, чтобы эти символы интерпретировались буквально , вызовите [regex]::Escape() по значениям:
($valuesToExclude.ForEach({ [regex]::Escape($_) }) -join '|')

Другие вопросы по тегам