Обработчик ошибок не улавливает ошибки в PowerShell

#windows #powershell

#Windows #powershell

Вопрос:

На моем предприятии по изучению PowerShell я столкнулся с другой проблемой, в которой я хотел бы получить вашу помощь в этом.

У меня есть приведенный ниже код внутри try-catch , но когда внутри try блока возникает ошибка, он, похоже, не отправляет ее в catch блок.

Код:

 try{
        if ($isFileAvailable -gt 0){
             $hashArgumentWithAttachment = @{
                From = $From
                To = $To
                Subject = $Subject
                Body = $Body
                SmtpServer = $SMTPServer
                Port = $SMTPPort
                UseSsl = $true
                Credential = $smtpCredential 
                Attachments = $filePath
            }

            Send-MailMessage @hashArgumentWithAttachment
        }
        Else {
            $hashArgumentWithOutAttachment = @{
                From = $From
                To = $To
                Subject = $Subject
                Body = $Body
                SmtpServer = $SMTPServer
                Port = $SMTPPort
                UseSsl = $true
                Credential = $smtpCredential 
            }

            Send-MailMessage @hashArgumentWithoutAttachment
        }
        Write-Output "Emailed"
        break
    }catch { 
        Write-Output "Error Occured, No of Attempts So far: "   $attempts.ToString()
    } 
  

В случае ошибки подключения к серверу я ожидаю, что попаду в блок catch, но вместо этого он выдает ошибку, подобную этой:

введите описание изображения здесь

Комментарии:

1. Попробуйте добавить erroraction в командлет: Send-MailMessage -Остановка ErrorAction

2. @BernardMoeskops спасибо за ваш ответ. Я думаю, ErrorAction пока решите мою проблему. Позвольте мне провести дальнейшее тестирование и подтвердить ваш ответ! Еще раз спасибо!

3. @BernardMoeskops Мои тесты, похоже, работают хорошо. Большое вам спасибо. Упомяните это в разделе ответов, и я незамедлительно получу подтверждение 🙂

Ответ №1:

Добавьте ErrorAction в командлет:

 Send-MailMessage @hashArgumentWithoutAttachment -ErrorAction Stop
  

Приветствия!