Powershell Get-ChildItem -recurse не получает все элементы

Я работаю над сценарием powershell, удаляющим определенные файлы из папки и перемещающим остальные в предопределенные подпапки.

Моя структура выглядит следующим образом

Main
    (Contains a bunch of pdb and dll files)
    -- _publish
        --Website
            (Contains a web.config, two other .config files and a global.asax file)
            -- bin
                (Contains a pdb and dll file)
            -- JS
            -- Pages
            -- Resources

Я хочу удалить все файлы pdb, config и asax из всей файловой структуры, прежде чем начать их перемещение. На что я использую:

$pdbfiles = Get-ChildItem "$executingScriptDirectory\*.pdb" -recurse

foreach ($file in $pdbfiles) {
    Remove-Item $file
}

И так далее для всех типов файлов, которые мне нужно удалить. Он отлично работает, за исключением файла pdb, расположенного в папке bin на веб-сайте. И для файла ASAX в папке сайта. По какой-то причине они игнорируются рекурсивным поиском Get-ChildItem.

Это вызвано глубиной элементов в ресурсивной структуре? Или что-то еще? Как я могу это исправить, чтобы он удалял ВСЕ файлы, как указано.

РЕДАКТИРОВАТЬ: я пытался добавить -force - но это ничего не изменило

ОТВЕТ: сработало следующее:

$include = @("*.asax","*.pdb","*.config")
$removefiles = Get-ChildItem "$executingScriptDirectory\*" -recurse -force -include $include 

foreach ($file in $removefiles) {
    if ($file.Name -ne "Web.config") {
        Remove-Item $file
    }
}
7
задан Brian Tompsett - 汤莱恩 22 August 2015 в 13:48
поделиться