powershell RoboCopy“访问被拒绝”未返回失败

7xllpg7q  于 2023-03-30  发布在  Shell
关注(0)|答案(3)|浏览(482)

我有一个powershell脚本,可以使用robocopy将文件从一台计算机复制到另一台UNC。最近,它使用新用户帐户运行,并在目标上获得拒绝访问。重试限制设置为10,所以它在那一点上失败了。问题是命令的返回结果没有显示失败,退出代码为0,因此未捕获故障。下面是完整的日志。您可以在顶部看到使用的选项:(仅更改了服务器名称)(最后一行来自PS命令
Write-Host“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。
短暂性脑缺血发作
JS系统

fcipmucu

fcipmucu1#

我看到这个,意识到这是从2018年-但我觉得我需要回答。这可能会得到零票-但这里说:
1.首先,你应该(如果你还没有)下载Windows版本的Linux/Unix命令,比如“grep”。
注意:因为Windows现在包含了一个GREP函数--你可能不得不将unix命令从“grep”重命名为“fgrep”或者“ugrep”--至少我不得不这样做。
1.你可能需要使用(或者应该使用)“/log:“和“/tee”选项。/log选项显然可以让你创建一个日志文件,但是/tee可以让你在屏幕上看到日志文件。这两个选项都很好用。
一旦robocopy完成-你可以使用grep。
好了-机器复印已经完成了。然后你可以输入:
C:〉fgrep -i“error“
这应该会给予你日志文件中的每一行,其中包含空格包围的单词ERROR。还有一个选项可以列出消息所在的行,如下所示:
C:〉fgrep -in“error“
这里有一个例子:
D:〉fgrep -in“error“robocopy.log

17:2022/02/26 15:23:22 ERROR 32 (0x00000020) Copying NTFS Security to Destination File C:\DumpStack.log.tmp
21:2022/02/26 15:23:22 ERROR 32 (0x00000020) Copying NTFS Security to Destination File C:\hiberfil.sys
25:2022/02/26 15:23:22 ERROR 32 (0x00000020) Copying NTFS Security to Destination File C:\pagefile.sys
29:2022/02/26 15:23:22 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\RAMDisk.img
33:2022/02/26 15:23:22 ERROR 32 (0x00000020) Copying NTFS Security to Destination File C:\swapfile.sys
39:2022/02/26 15:23:24 ERROR 5 (0x00000005) Copying NTFS Security to Destination File C:\System Volume Information\1{3808876b-c176-4e48-b7ae-04046e6cc752}
43:2022/02/26 15:23:24 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\System Volume Information\IndexerVolumeGuid
47:2022/02/26 15:23:24 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\System Volume Information\ISwift3.dat
51:2022/02/26 15:23:24 ERROR 32 (0x00000020) Copying NTFS Security to Destination File C:\System Volume Information\klBackupDepository.dat
55:2022/02/26 15:23:24 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\System Volume Information\kliddb.dat
59:2022/02/26 15:23:24 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\System Volume Information\klmeta.dat
63:2022/02/26 15:23:24 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\System Volume Information\klobjdb.dat
67:2022/02/26 15:23:24 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\System Volume Information\MountPointManagerRemoteDatabase
72:2022/02/26 15:23:24 ERROR 2 (0x00000002) Copying NTFS Security to Destination File C:\System Volume Information\WPSettings.dat
gmxoilav

gmxoilav2#

我认为最好的解决方案是避免Robocopy或忽略它的错误处理,只是在运行后比较目录。

9gm1akwq

9gm1akwq3#

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"}

相关问题