Ich stimme mit dangph überein, dass der -exclude nicht wie erwartet funktioniert.
Wenn Sie -notmatch verwenden, können Sie ein Regex-Muster mit oder erstellen |
.
Das funktioniert hier mit dem überarbeiteten $ 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
EDIT Da es sich bei den ausgeschlossenen Ordnern um die erste Ebene handelt, ist es viel schneller, sie nicht zu durchlaufen. Daher ist ein zweistufiger Ansatz effizienter:
$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 }