Самый простой способ сделать это - использовать параметр -Exclude
в get-childitem
.
Вот примеры для исключения файла:
Get-ChildItem C:\Path -Exclude SampleFileToExclude.txt| Remove-Item -Force
Исключить файлы с определенным расширением, используя подстановочный знак:
Get-ChildItem C:\Path -Exclude *.zip | Remove-Item -Force
Получить все файлы рекурсивно и исключить одно и то же:
Get-ChildItem C:\Path -Recurse -Exclude *.zip | Remove-Item -Force
Исключить список элементов по вашему желанию в той же команде:
Get-ChildItem C:\Path -Recurse -Exclude *.zip, *.docx | Remove-Item -Force
Вы даже можете использовать с массивом и где условие:
$exclude_ext = @(".zip", ".docx")
$path = "C:\yourfolder"
Get-ChildItem -Path $path -Recurse | Where-Object { $exclude_ext -notcontains $_.Extension }
И тогда вы можете удалить, используя Remove-Item
Надеюсь, это поможет.