Вы фактически фильтруете исключенные папки дважды.
Первый раз с использованием параметра -Exclude
и второй раз с использованием регулярного выражения -match
.
Однако параметр Exclude
принимает строковый массив, а не одну строку с ключевыми словами, разделенными запятой и символом новой строки, как вы получаете из 'here-string'.
Смотрите Get-ChildItem
Кроме того, вы используете неправильное регулярное выражение, потому что звездочки *
в регулярном выражении являются квантификатором, а не подстановочным знаком.
Я предлагаю вам отфильтровать один раз, используя один из параметров -Exclude
, например, здесь (здесь звездочки являются подстановочными знаками):
$FolderExlusions = "App_Data","Logs","TEMP","ExamineIndexes","DistCache*","GitPathProviderRepository*"
Get-ChildItem -Path $InstallationDirectorySite -Recurse -Exclude $FolderExlusions | Remove-Item -Recurse -WhatIf
Или используйте только метод регулярных выражений в предложении Where-Object
, например:
$FolderExlusions = "^(App_Data|Logs|TEMP|ExamineIndexes|DistCache.*|GitPathProviderRepository.*)"
Get-ChildItem -Path $InstallationDirectorySite -Recurse | Where-Object { $_.Name -notmatch $FolderExlusions } | Remove-Item -Recurse -WhatIf
Удалите -WhatIf
, если вы удовлетворены результатами.
Надеюсь, это поможет