2017-02-10 4 views
0

Я использую robocopy в PowerShell, а robocopy возвращает код выхода 1, если файл был успешно скопирован, что говорит об ошибке PowerShell. Есть ли хорошая практика игнорировать ошибку, поскольку она не является ошибкой?Получить PowerShell, чтобы игнорировать exitcode?

$source = "$env:buildlocation\Reports\$env:ctrelname\DiskImages\DISK1"; 
$target = "$env:builddestination\$env:ctrelver\$env:ctrelname\Reports"; 
$robocopyOptions = @('/e', '/r:0', '/np'); 
Get-ChildItem -Path $source -Directory -Attributes !Hidden | 
    Sort-Object -Property CreationTime | 
    ForEach-Object { & robocopy.exe $source $target $robocopyOptions }; 
echo $LASTEXITCODE 
+0

См. [Этот вопрос] (http://stackoverflow.com/questions/13883404/custom-robocopy-progress-bar-in-powershell), например. – sodawillow

+1

Зачем вам это нужно? Коды выхода из внешних команд не имеют значения для PowerShell, если вы явно не обрабатываете код выхода. –

ответ

0

Как указано выше, PowerShell не оценивает код ошибки собственной команды. Он хранит его только в $LastExitCode. Попробуйте этот простой пример:

Invoke-Expression 'cmd /c "exit 5"' 

PowerShell хранит только 5 в $LastExitCode.