我有一个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
答案 0 :(得分:0)
robocopy是cmd可执行文件,如果您要查找的是,不会将$ false返回到powershell。一个很好的例子是ping命令始终返回退出代码0。您将需要使用powershell命令。复制项目是一个好的开始。
如果必须使用robocopy,则可以将其放入变量中,并在字符串中检查响应是否包含“访问被拒绝”等。 不知道您的代码是什么,或者您要复制什么...但是一个主意...
$temp = robocopy *.* /s... etc...
if ($temp -match "Access is denied"){"Robocopy failed due to a denial of access"}