Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 文件系统对象:MoveFolder随机给出;“拒绝许可”;错误_Powershell_Filesystemobject - Fatal编程技术网

Powershell 文件系统对象:MoveFolder随机给出;“拒绝许可”;错误

Powershell 文件系统对象:MoveFolder随机给出;“拒绝许可”;错误,powershell,filesystemobject,Powershell,Filesystemobject,我在Powershell中使用文件系统对象来执行一些文件夹循环:假设有oldFolder、currentFolder和newFolder,这是一个过程: 删除文件夹旧文件夹 将文件夹currentFolder移动到oldFolder 将文件夹newFolder移动到currentFolder 在脚本中运行时,步骤2或3随机抛出CTL_E_PERMISSIONDENIED。 当脚本停止时,我重复最后一个命令,它将正确完成 似乎MoveFolder方法是半异步的 这些文件夹有子文件夹和很多文件 我试

我在Powershell中使用文件系统对象来执行一些文件夹循环:假设有oldFolder、currentFolder和newFolder,这是一个过程:

  • 删除文件夹旧文件夹
  • 将文件夹currentFolder移动到oldFolder
  • 将文件夹newFolder移动到currentFolder
  • 在脚本中运行时,步骤2或3随机抛出CTL_E_PERMISSIONDENIED。 当脚本停止时,我重复最后一个命令,它将正确完成

    似乎MoveFolder方法是半异步的

    这些文件夹有子文件夹和很多文件

    我试着增加一些延迟,但我不高兴不知道发生了什么

    $oldFolder = "D:\test\folder_OLD"
    $curFolder = "D:\test\folder"
    $newFolder = "D:\test\folder_NEW"
    
    $fso = $fso = New-Object -ComObject scripting.filesystemobject
    
    if (Test-Path $oldFolder) {$fso.DeleteFolder($oldFolder)}
    
    if (Test-Path $curFolder) {$fso.MoveFolder($curFolder,$oldFolder)}
    
    $fso.MoveFolder($newFolder,$curFolder)
    

    谢谢你的迅速回复。这证实了我的怀疑


    我将尝试使用另一种方法,可能是Lee提出的纯powershell。

    您是否尝试过使用纯powershell而不是将wscript与PoSh混合使用?[咧嘴笑]令人惊讶和不幸的是,这会导致间歇性、不可预测的故障。我怀疑这就是这里发生的事情;有关强大的自定义文件夹删除功能,请参见@Lee_Dailey:问题最终在于Windows API,PowerShell的
    Remove Item-Recurse
    也受到同样的影响,就像
    cmd.exe的
    rd/s
    @Lee_Dailey一样,是的,它只是间歇性地发生是问题的一部分;显然,有人在谈论尽快使Windows API同步: