Как добавить условия из переменной в 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 '|')