Как сохранить форматирование текста в выводе переменных Powershell? - PullRequest
0 голосов
/ 09 апреля 2019

Я использую приведенный ниже код в своем скрипте PS, чтобы перехватить часть вывода Robocopy и отправить его по электронной почте, но он не поддерживает формат вывода.

$roboresult = (Get-Content $tmpdest\$RoboLog | Select-Object -first 15)
$roboresult += (Get-Content $tmpdest\$RoboLog | Select-Object -last 10)
$roboresult

Он выводится по электронной почте, какследующий (не отформатированный);

------------------------------------------------------------------------------- ROBOCOPY :: Надежное копирование файловдля Windows
------------------------------------------------------------------------------- Начато: вторник, 09 апреля 09:27:17 2019 Источник: I: \~ temp \ SIGNO \
Dest: \ BRC \ H $ \ ~ temp \ SIGNO \ Files: . Параметры: . / X / NDL / NFL / S / E /КОПИЯ: DAT / MOVE / Z / NP / MT: 8 / R: 10 / W: 5
----------------------------------------------------------------------------- ------------------------------------------------------------------------------ Общее количество скопированных пропущенных несоответствий FAILED Доп. Каталоги:
1235 1235 0 0 0 0 Файлы:
147408 147408 0 0 0 0 Байт: 79,215 г 79,215 г 0 0 0 0 Время: 27:56:05 2:47:50 0:00:00 0:21:21 Завершено: вторник, апр. 09 12:36:29 2019

Как мне сделать так, чтобы я получал в отформатированном письме?

Заранее благодарю за любую помощь.Ура!

1 Ответ

0 голосов
/ 09 апреля 2019

Я думаю, что это возможно с тем, как вы создаете команду почтового сообщения. Если я настрою ту же ситуацию, что и у вас, я получу переменную $roboresult с 25 строками отформатированного кода. Вам нужно будет преобразовать это в строку, чтобы использовать send-mailmessage, если вы отправляете это как тело письма. Если вы присоединяете каждую строку с CRLF символами, вы должны сохранить форматирование в электронной почте.

send-mailmessage -from recipient@domain.com -to you@domain.com -subject "Robocopy Results" -body ($roboresult -join "`r`n") -smtpserver servername

Исходя из ваших комментариев, вы сможете заменить $roboresult следующим текстом:

$($roboresult -join "`r`n")
...