Сообщение об ошибке Powershell после копирования с деталями - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в Powershell и в настоящее время работаю над делом, чтобы скопировать разные файлы на один сервер.После копирования файла на сервер результат вернется в файлы журналов (успешно или неудачно).

Для сбойной копии в сообщении об ошибке указывается причина сбоя, например, сервер недоступен или пользователь не имеет доступа.Системное сообщение об ошибке.

Я пытался использовать $ errorMessage, но это не сработало, может кто-нибудь показать мне, как это сделать, пожалуйста?

Цитата

    $dest = "\\server1\folder\as00.LOG"
    $source_path = "\\server2\folder\as00.LOG", "\\server3\folder\as00.LOG  "
    $logProgress = "\\server1\folder\CopyLogs.txt"

    foreach ($Path in $source_path) {    
     If (Test-Path $dest ){
     $i = 1
     While (Test-Path $dest )
     {  $dest = "\\server1\folder\as00$i.LOG"
        $i += 1}
     }else{ New-Item -ItemType File -Path $Dest -Force}

     Copy-Item -Path $Path -Destination $dest -Recurse -Force -errorAction silentlyContinue   
     if($? -eq $false) {
        $ErrorMessage = $_.Exception.Message
        echo "Date: $((Get-Date).ToString()). Status: Copy Failure - $ErrorMessage" | out-file -append $logProgress}
     else{
        echo "Date: $((Get-Date).ToString()). Status: Successfully copied" | out-file -append $logProgress}
      }  

Большое спасибо!Lynn

1 Ответ

0 голосов
/ 24 мая 2018

Для $ErrorMessage:

$ErrorMessage = $Error[0].Exception.Message    # probably
$ErrorMessage = $Error[0].ErrorDetails.Message # less likely

Для if($?, я рекомендую использовать стандарт Try / Catch.-ErrorAction Stop требуется , поскольку

try{
    Copy-Item -Path $Path -Destination $dest -Recurse -Force -ErrorAction Stop

    # if the script gets to this part, Copy-Item did not error
    echo "Date: $((Get-Date).ToString()). Status: Successfully copied" | out-file -append $logProgress
}catch{
    # what to do if an error is encountered:
    $ErrorMessage = $Error[0].Exception.Message
    echo "Date: $((Get-Date).ToString()). Status: Copy Failure - $ErrorMessage" | out-file -append $logProgress}
}

Связано: Как захватить и распечатать сообщение об исключении PowerShell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...