В процессе написания скрипта возникло желание обрабатывать ошибки send-mailmessage при помощи обработки try-catch. Все бы хорошо, но catch не ловит ошибки от командлета send-mailmessage.
Самая простая конструкция, которая должна, вроде бы, работать:
try {
Send-MailMessage -SmtpServer 'SMTP.server.LOCAL123' `
-From 'FromMail@mail.work' `
-To 'ToMail@mail.work' `
-Subject 'Some Subject' `
-Body 'Some text to body' `
} catch {
$_
}
Не отрабатывает, и выдает ошибку в стандартном виде:
Send-MailMessage : Невозможно разрешить удаленное имя: 'SMTP.server.LOCAL123'
C:\Users\username\Documents\tmp.ps1:76 знак:9
+ Send-MailMessage @EMail
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-Ma
ilMessage], SmtpException
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage
Облазил пол интернета, в основном пишут как отправлять ошибки при помощи send-mailmessage, нежели как отловить их и записать в лог от самого командлета.