Я написал скрипт, который будет извлекать указанную папку и делать анализ файлов внутри нее. Мне нужно исключить указанные подпапки в анализе. Этот список исключений изменяется в зависимости от анализируемой базовой папки. У меня есть скрипт, работающий с использованием длинного шаблона, как это:
Get-ChildItem -File -Recurse $source_folder |
Where-Object {
$_.FullName -notlike "*\folder_name0\*" -and
$_.FullName -notlike "*\folder_name1\*" -and
$_.FullName -notlike "*\folder_name2\*" -and
$_.FullName -notlike "*\folder_name3\*" -and
$_.FullName -notlike "*\folder_name4\*"
}
но это не очень многоразово. Я хотел бы иметь возможность хранить списки исключений в .CSV и вызывать нужный мне список исключений на основе набора папок, который я анализирую. Я хотел бы сделать что-то вроде:
$exception_list = Import-CSV .\exception_list
Get-ChildItem -File -Recurse $source_folder |
Where-Object {$_.FullName -notlike $exception_list}
но это не работает. Я подозреваю, потому что я не могу указать и 'и' или 'или' между элементами в массиве. Я кратко рассмотрел попытку создания целого аргумента на лету, используя foreach($exception in $exception_list){$argument += "$_.FullName -notlike $exception -and"}
, но это оказалось довольно глупым и сложным довольно быстро, так как вам все еще нужно удалить последние 'и'.
Есть ли эффективный способ сделать это?