在PowerShell中,我相信我观察到PowerShell在删除其内容之前试图删除文件夹。我正在使用的命令是Remove-Item
。
过去,与-recurse
一起使用会偶尔错误地抱怨该目录不是空的。当我看到那个错误时,我会在检查时发现目标目录为空。我最好的猜测是,当文件仍在被删除的过程中,它正在继续前进。现在我看到了更多的证据。
由于上述原因,我试图使用以下代码段:
$toDelete = Get-ChildItem $path -Recurse
[Array]::Reverse($toDelete)
$toDelete | Remove-Item
Remove-Item $path
我现在得到的是以下提示:
Confirm
The item at [path to directory] has children and the Recurse parameter was not specified. If you continue, all
children will be removed with the item. Are you sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
再次检查时,目录为空。我最好的猜测是$toDelete | Remove-Item
在实际删除文件之前返回,并且我在Remove-Item $path
上看到此提示。
这是一个已知问题吗?我怀疑发生了什么问题?我该如何解决它?
我尝试使用cmd /C "rd /S [path to directory]"
,但这是有问题的,因为我发现退出代码是0
,因为它无法删除一些正在使用的子代。 (这是我使用的潜在情况,我需要它是一个错误情况。)
答案 0 :(得分:2)
使用-Recurse开关的Remove-Item在V1-V3中有错误(实际上它告诉你它在帮助中无法正常工作)。 它在V4中被修复(最后)。我已经使用这种方法作为解决方法,它总是对我有用:
$toDelete = Get-ChildItem $path -Recurse |
select -expand property fullname |
sort -length descending |
Remove-Item
Remove-Item $path