RoboCopy «Доступ запрещен» Не возвращает ошибку - PullRequest
0 голосов
/ 09 октября 2018

У меня есть скрипт powershell для копирования файлов с одного компьютера на другой UNC с помощью robocopy.Недавно он был запущен с новой учетной записью пользователя и получил отказ в доступе для цели.Предел повторных попыток был установлен на 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, с ошибочным счетчиком = 1.

TIA

JS

1 Ответ

0 голосов
/ 09 октября 2018

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