在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
,因为当它删除一些正在使用的孩子时失败。 (这是我的使用潜在的情况,我需要它是一个错误的情况。)
是的,我在帮助中看到。该帮助明确指出,它与'-Include'和'-Recurse'之间的相互作用有关,不过我并没有这样做。有趣。您将输出捕获到一个变量中。想想看,我认为我抓住了一些其他的东西,以防止剧本在命令完成之前继续前进。我会尝试一下并报告。 – jpmc26
我不认为这实际上是在V4中修复的。我仍然看到问题。 – jpmc26