powershell - 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
解决方案
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"}
推荐阅读
- java - 我可以传递未定义的参数吗?
- spring - Zull 服务器配置失败
- airflow - 在 Airflow 2.0 中开发自己的自定义运算符的最佳实践
- flutter - 显示底部工作表不出现
- azure - Azure DevOps - Maven Pipeline 发布工件
- server-side-rendering - 如何在组合 API 设置功能中检查 Vue 3 SSR 状态
- sql - sql 按月和年求和
- c++ - 同一变量的多个值的 if 语句
- javascript - Javascript 正则表达式匹配跳回新行
- javascript - 如何在 react-router-dom 中使用上下文 api?