PowerShell отправляет эхо-вывод на электронную почту

#powershell

#powershell

Вопрос:

Привет, ребята, я пытаюсь отправить вывод команды echo в файл журнала в виде тела электронного письма, используя Send-MailMessage.

Теперь я могу отправлять только файл журнала, но я хочу отправить содержимое этого журнала в теле письма.

Как это сделать?

В настоящее время я использую эту строку:

 Send-MailMessage -from donotreply@company.com -to "nobody@company.com" -subject "test" -body "test" -Attachment "C:log.log" -smtpServer smtp.Server.com
  

Ответ №1:

Вам нужно прочитать содержимое файла журнала и использовать его для параметра Body

 # -Raw reads it as single multiline string, including newlines
$body = Get-Content -Path 'C:log.log' -Raw  
Send-MailMessage -Body $body ...
  

Если почта должна быть HTML (с переключателем -BodyAsHtml ), вам необходимо преобразовать новые строки в <br /> like

 # without -Raw you get the content as string array
$body = (Get-Content -Path 'C:log.log') -join '<br />'
Send-MailMessage -Body $body -BodyAsHtml ...
  

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

1. Это сработало, так что теперь я столкнулся с новой проблемой 🙂 Я хочу запланировать этот скрипт в планировщике задач, и для no он не работает. Он переходит в состояние запущено, и я заканчиваю его каждый раз. Может быть, какие-то предложения?

2. @user3391373 Это может быть вызвано рядом причин, таких как проблема с правами доступа у пользователя, выполняющего задачу, для доступа к файлу журнала. Пожалуйста, отправьте новый вопрос для этого и объясните проблему и ошибки, которые вы видите (если таковые имеются)