2013-12-17 165 views
1

我有一个Powershell脚本应该删除X天的项目。它没有完全工作。它删除一些文件,但不是所有的文件。当我运行没有| Remove-Item -Force的脚本时,将显示所有符合要求的文件。所以,我知道where声明的作品。Powershell删除项目不会删除所有项目

为什么Remove-Item -Force不删除符合where声明要求的所有项目,以及如何修复?

$deleteFiles = Get-Childitem $fullTargetPath -Recurse 
| Where {$_.LastWriteTime -lt (Get-Date).AddDays(-10)} | Remove-Item -Force 
+0

请尝试后放置-whatif参数比你看到的是采取什么样的行动中删除项。 – RayofCommand

+0

在所有项目上执行操作“在目标上执行操作”删除文件“,但它们不会从文件夹中删除。 –

+0

你跳过的文件是否有错误? –

回答

1

就在“删除项目”添加“Foreach”之前。

因此,例如:

$deleteFiles = Get-Childitem $fullTargetPath -Recurse | 
    Where {$_.LastWriteTime -lt (Get-Date).AddDays(-10)} | 
    Foreach { Remove-Item $_.FullName -Force} 
+1

这似乎是个窍门!但我仍然困惑你的解决方案为什么起作用,而我却没有。 “WhatIf”表明行动正在发生,但它从未真正做到过。 –