在PowerShell中强制删除目录及其所有子目录的最简单方法是什么?我在Windows 7中使用PowerShell V2.
我从几个消息来源获悉,最明显的命令,Remove-Item $targetDir -Recurse -Force无法正常工作.这包括PowerShell V2在线帮助(找到使用Get-Help Remove-Item -Examples)中的声明,其中声明:
...由于此cmdlet中的Recurse参数有问题,因此该命令使用Get-Childitem cmdlet获取所需的文件,并使用管道运算符将它们传递给Remove-Item cmdlet ...
我已经看到了各种使用Get-ChildItem并将其传递给Remove-Item的示例,但这些示例通常会根据过滤器而不是整个目录删除一些文件集.
我正在寻找最简洁的方法来吹灭整个目录,文件和子目录,而不使用最少量的代码生成任何用户警告消息.如果容易理解,单行会很好.
我正在实现自定义PowerShell提供程序.我现在正在处理remove-item cmdlet实现.
RemoveItem方法具有以下签名:
protected override void RemoveItem(string path, bool recurse)
Run Code Online (Sandbox Code Playgroud)
当我输入:Remove-Item .\Myobject -recursePowerShell基础结构为我提供了RemoveItem方法true的recurse参数值.
但是当我输入:Remove-Item.\ MyObject'我得到一个问题:
MyObject中的项目具有子项,未指定Recurse参数.如果继续,所有孩子将被移除该项目.你确定你要继续吗?[Y]是[A]是全部[N]否[L]否全部[S]暂停[?]帮助(默认为"Y"):
我想这个问题是由PowerShell基础设施呈现给我的.这非常好,因为我要删除的对象是一个容器.如果我对上述问题的回答是肯定的,那么PowerShell基础结构不会设置recurse参数.事实上,当RemoveItem调用我的方法时它是错误的.我会除了参数是真的,因为我对问题的回答是肯定的.
我的问题是:
为什么PowerShell没有将bool recurse参数设置为正确的值?
我是否需要以其他方式获得价值(回答问题)?怎么样?
如果以上是不可能的,有没有办法压制这个问题?