Ошибка перехвата из командлета Send-MailMessage при вызове из командного файла - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть командный файл, использующий командлет PowerShell Send-MailMessage для отправки сообщений электронной почты с обновлениями состояния:

powershell -command " & {Send-MailMessage -SMTPServer smtp.somewhere.com -From 'Sender <sender@email.com>' -To 'Recipient <recipient@email.com>' -Subject 'Subject' -Body 'Body' -Attachments 'D:\Logs\Log.log';}"
if %ERRORLEVEL% neq 0 (
echo ERROR - Something went wrong sending the email
goto Error
)

Если команда Send-MailMessage не работает (например, если файл вложения не найден или другая ошибка),% ERRORLEVEL% не поднимается выше 0.

В других ответах предлагается добавить явные коды выхода в сценарий PowerShell для возврата кода, но я не могу найти ничего о том, как зафиксировать ошибку при использованиивстроенный PS командлет, такой как Send-MailMessage.Это можно сделать или мне нужно обернуть Send-MailMessage в другой скрипт PS?

1 Ответ

0 голосов
/ 04 декабря 2018

Обернуть всю команду в блок try catch и выдать явную ошибку.Это вернет ненулевой код выхода.

powershell -command "Try {Send-MailMessage ... -ErrorAction Stop;} Catch { Exit 1 }"

В одной строке читать немного сложнее, но:

powershell -command "Try {Send-MailMessage -SMTPServer smtp.somewhere.com -From 'Sender <sender@email.com>' -To 'Recipient <recipient@email.com>' -Subject 'Subject' -Body 'Body' -Attachments 'D:\Logs\Log.log' -ErrorAction Stop;} Catch { Exit 1 }"
if %ERRORLEVEL% neq 0 (
echo ERROR - Something went wrong sending the email
goto Error
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...