Я согласен с dangph, что -exclude не работает должным образом.
При использовании -notmatch вы можете создать шаблон регулярного выражения с помощью или |
.
Это работает здесь с пересмотренным $ include:
$Include = @('*.zip','*.rar','*.tar','*.7zip') $exclude = [RegEx]'^C:\\Windows|^C:\\Program Files' Get-ChildItem "C:\" -Include $Include -Recurse -Force -EA 0| Where FullName -notmatch $exclude| Select-Object -ExpandProperty FullName
РЕДАКТИРОВАТЬ Поскольку исключенные папки относятся к первому уровню, гораздо быстрее их вообще не повторять, поэтому двухэтапный подход более эффективен:
$Include = @('*.zip','*.rar','*.tar','*.7zip') $exclude = [RegEx]'^C:\\Windows|^C:\\Program Files' Get-ChildItem "C:\" -Directory | Where FullName -notmatch $exclude|ForEach { Get-ChildItem -Path $_.FullName -Include $Include -Recurse -Force -EA 0| Select-Object -ExpandProperty FullName }