首页 > 解决方案 > RoboCopy“拒绝访问”不返回失败

问题描述

我有一个 powershell 脚本,可以使用 robocopy 将文件从一台计算机复制到另一台 UNC。最近,它使用一个新的用户帐户运行,并在目标上获得了拒绝访问。重试限制设置为 10,因此此时失败。问题是命令的返回并没有表明有失败,退出码是0,所以没有捕捉到失败。完整日志如下。您可以在顶部看到使用的选项:(仅更改了服务器名称)(最后一行来自 PS 命令

写入主机“Robocopy.exe 已完成,代码为 $lastexitcode”)

[18:54:04][Step 1/1]   Started : Monday, October 8, 2018 6:54:04 PM
[18:54:04][Step 1/1]    Source : C:\Source
[18:54:04][Step 1/1]      Dest : \\Server\Target
[18:54:04][Step 1/1] 
[18:54:04][Step 1/1]     Files : *.*
[18:54:04][Step 1/1]        
[18:54:04][Step 1/1]   Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /NP /R:2 /W:30 
[18:54:04][Step 1/1] 
[18:54:04][Step 1/1] ------------------------------------------------------------------------------
[18:54:04][Step 1/1] 
[18:54:06][Step 1/1]                     438    C:\Source
[18:54:06][Step 1/1] 2018/10/08 18:54:06 ERROR 5 (0x00000005) Accessing Destination Directory \\Server\Target
[18:54:06][Step 1/1] Access is denied.
[18:54:06][Step 1/1] 
[18:54:38][Step 1/1] Waiting 30 seconds... Retrying...
[18:54:38][Step 1/1] 2018/10/08 18:54:38 ERROR 5 (0x00000005) Accessing Destination Directory \\Server\Target
[18:54:38][Step 1/1] Access is denied.
[18:54:38][Step 1/1] 
[18:55:10][Step 1/1] Waiting 30 seconds... Retrying...
[18:55:10][Step 1/1] 2018/10/08 18:55:10 ERROR 5 (0x00000005) Accessing Destination Directory \\Server\Target
[18:55:10][Step 1/1] Access is denied.
[18:55:10][Step 1/1] 
[18:55:10][Step 1/1] 
[18:55:10][Step 1/1] ERROR: RETRY LIMIT EXCEEDED.
[18:55:10][Step 1/1] 
[18:55:10][Step 1/1] 
[18:55:10][Step 1/1] ------------------------------------------------------------------------------
[18:55:10][Step 1/1] 
[18:55:10][Step 1/1]                Total    Copied   Skipped  Mismatch    FAILED    Extras
[18:55:10][Step 1/1]     Dirs :         1         0         1         0         0         0
[18:55:10][Step 1/1]    Files :         0         0         0         0         0         0
[18:55:10][Step 1/1]    Bytes :         0         0         0         0         0         0
[18:55:10][Step 1/1]    Times :   0:01:06   0:00:00                       0:01:00   0:00:06
[18:55:10][Step 1/1]    Ended : Monday, October 8, 2018 6:55:10 PM
[18:55:10][Step 1/1] 
[18:55:10][Step 1/1] Robocopy.exe completed with code 0

即使在这一点上,我唯一的预感是特定错误“访问目标目录”有些奇怪。当我尝试仅删除文件权限的测试时,出现错误

14:08:15 ERROR 5 (0x00000005) Copying File

并且 robocopy 正确返回退出代码 8,FAILED 计数 = 1。

TIA

JS

标签: powershellrobocopy

解决方案


robocopy 是一个 cmd 可执行文件,并且不会将 $false 返回到 powershell,如果这是您正在寻找的。一个很好的例子是 ping 命令总是返回 0 的退出代码。您需要使用 powershell 命令。copy-item 是一个好的开始。

如果您必须使用 robocopy,那么您可以将其放入一个变量中,并在字符串中检查“访问被拒绝”等响应。不确定你的代码是什么,或者你正在复制什么......但是一个想法......

$temp = robocopy *.* /s... etc...
if ($temp -match "Access is denied"){"Robocopy failed due to a denial of access"}

推荐阅读