相关疑难解决方法(0)

如何在PowerShell中静默删除包含内容的目录

使用PowerShell,是否可以删除包含文件的某个目录而不提示确认操作?

directory powershell

213
推荐指数
9
解决办法
25万
查看次数

为什么mkdir偶尔会拒绝访问?

我有BAT脚本,这些都不是很棘手,在XP上工作正常.但是在Win 7上,在rmdir之后的mkdir中,大约有五分之一的执行给了一个神秘的Access Denied.例如

S:\TLIB importing\! Curtains\2 To process>rmdir temp3allout /s /q

S:\TLIB importing\! Curtains\2 To process>mkdir temp3allout
Access is denied.
Run Code Online (Sandbox Code Playgroud)

在此之后,当我在资源管理器中尝试时,制作该目录没有问题.再次运行thatBAT通常会成功.

知道这里发生了什么吗?

Win XP光盘是一个普通的2Gb驱动器.Win 7光盘是一个2Gb Intel RST RAID1阵列,禁用缓存和刷新http://i.imgur.com/Ohqkg2t.png.

cmd windows-7

4
推荐指数
1
解决办法
2948
查看次数

PowerShell自定义提供程序RemoveItem

我正在实现自定义PowerShell提供程序.我现在正在处理remove-item cmdlet实现.

RemoveItem方法具有以下签名:

protected override void RemoveItem(string path, bool recurse)
Run Code Online (Sandbox Code Playgroud)

当我输入:Remove-Item .\Myobject -recursePowerShell基础结构为我提供了RemoveItem方法truerecurse参数值.

但是当我输入:Remove-Item.\ MyObject'我得到一个问题:

MyObject中的项目具有子项,未指定Recurse参数.如果继续,所有孩子将被移除该项目.你确定你要继续吗?[Y]是[A]是全部[N]否[L]否全部[S]暂停[?]帮助(默认为"Y"):

我想这个问题是由PowerShell基础设施呈现给我的.这非常好,因为我要删除的对象是一个容器.如果我对上述问题的回答是肯定的,那么PowerShell基础结构不会设置recurse参数.事实上,当RemoveItem调用我的方法时它是错误的.我会除了参数是真的,因为我对问题的回答是肯定的.

我的问题是:

  1. 为什么PowerShell没有将bool recurse参数设置为正确的值?

  2. 我是否需要以其他方式获得价值(回答问题)?怎么样?

  3. 如果以上是不可能的,有没有办法压制这个问题?

powershell powershell-provider

2
推荐指数
1
解决办法
3366
查看次数

无法删除项目,目录不为空

使用Remove-Item命令时,即使使用-r-Force参数,有时也会返回以下错误消息:

Remove-Item:无法删除项目C:\ Test Folder \ Test Folder \ Target:目录不为空。

特别是在Windows资源管理器中打开要删除的目录时,会发生这种情况。

现在,虽然可以通过关闭Windows资源管理器或不浏览该位置来避免这种情况,但是我在多用户环境中工作脚本(在这种环境下,人们有时会忘记关闭Windows资源管理器窗口,但我对删除的解决方案感兴趣)即使在Windows资源管理器中打开了整个文件夹和目录。

有没有比-Force我可以设置的功能更强大的选项了?

为了可靠地重现此内容,请创建文件夹C:\Test Folder\Origin并在其中填充一些文件和子文件夹(重要),然后采用以下脚本或类似的脚本并执行一次。现在打开C:\Test Folder\Target(在我的情况下,我使用C:\Test Folder\Target\Another Subfoldercontains A third file.txt)的子文件夹之一,然后尝试再次运行该脚本。您现在将得到错误。如果您第三次运行该脚本,则不会再次收到该错误(但是,根据我尚未确定的情况,该错误有时会第二次发生,然后再也不会发生,有时又第二次发生一次)。

$SourcePath =  "C:\Test Folder\Origin"
$TargetPath =  "C:\Test Folder\Target"

if (Test-Path $TargetPath) {
    Remove-Item -r $TargetPath -Force
}
New-Item -ItemType directory -Path $TargetPath 

Copy-Item $SourcePath -Destination $TargetPath -Force -Recurse -Container 
Run Code Online (Sandbox Code Playgroud)

windows powershell

2
推荐指数
1
解决办法
1635
查看次数