Да, -Filter
и -Exclude
могут использоваться вместе : -Filter
фильтры на источнике (просит файловую систему выполнить фильтрацию, что намного быстрее, чем при использовании -Include
))и -Exclude
затем заставляет PowerShell исключать совпадения.
Однако с Get-ChildItem
параметры -Include
и -Exclude
- как это ни удивительно - применяются только непосредственно к конечному компоненту (подразумеваемому)Аргумент -Path
или -LiteralPath
, а не его дочерние элементы .
При включении -Recurse
расширяет включения / исключения для конечных компонентов всех элементов внутри целевая папка, которая явно меняет поведение, учитывая, что обрабатываются не только немедленные дочерние элементы.
Для обработки только непосредственных дочерних элементов при применении включений / исключений используйте шаблонное выражение *
:
Get-ChildItem $csvLocation/* -Filter *Members*.csv -Exclude "*Members_$($Server[-1])*.csv"
Обратите внимание, что Get-Item
будет одинаково работать в этом случае, учитывая, что аспект child -itemобработка достигается подстановочным знаком expression.