#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
Приветствия!