Powershell Get-ChildItem -recurse无法获取所有项目

时间:2012-05-29 11:33:02

标签: powershell recursion delete-file subdirectory get-childitem

我正在使用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
}

对于我需要删除的所有文件类型等等。它的工作原理很好,除了位于网站bin文件夹中的pdb文件。并为网站文件夹中的ASAX文件。由于某些原因,它们会被Get-ChildItem递归搜索忽略。

这是由于resursive结构中物品的深度造成的吗?或者是别的什么?我该如何修复它,因此它会删除指定的所有文件。

编辑:我尝试添加-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
    }
}

2 个答案:

答案 0 :(得分:14)

Get-ChildItem -path <yourpath> -recurse -Include *.pdb

答案 1 :(得分:1)

您也可以使用管道删除:

Get-ChildItem -path <yourpath> -recurse -Include *.pdb | rm