Powershell: как отформатировать Get-Childitem для электронной почты? - PullRequest
4 голосов
/ 18 января 2012

Проще говоря, я пытаюсь отправить электронное письмо из скрипта Powershell, в котором перечислено содержимое каталога.

Для этого я сохраняю текст в переменной, а затем вставляю этотпеременная в Send-MailMessage.

Моя проблема заключается в следующем.Когда я направляю объект на Out-String следующим образом, он не вставляет новые строки:

$mailbody += "<p>" + (get-childitem $path | select-object Name | Out-String -width 40) + "</P>"

Очевидно, что при вводе Get-Childitem в приглашении вывод красиво форматируется с помощью новых строк, однако когдахранится в переменной, а затем отправляется по электронной почте (в электронном письме в формате HTML), нет новых строк, что приводит к нечитаемой длинной строке имен файлов.

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

Ответы [ 2 ]

6 голосов
/ 18 января 2012

Вы можете использовать командлет ConvertTo-Html, чтобы сделать это:

get-childitem $path | select-object Name | ConvertTo-Html -fragment

Это создаст для вас красивую таблицу, которую можно отправить по электронной почте в формате HTML.-fragment часть удаляет голову и тело и т. Д. И дает только таблицу.

2 голосов
/ 18 января 2012

Как насчет использования командлета ConvertTo-Html?Введите информацию о вашей среде.

$path = "C:\"
[string] $html = dir $path | ConvertTo-Html

$smptServer = ''
$to = ''
$from = ''
$subject = 'Test'
Send-MailMessage -To $to -From $from -Body $html -BodyAsHtml -SmtpServer $smptServer -Subject $subject

РЕДАКТИРОВАТЬ - Это работает, но электронная почта выглядит как дерьмо.Если вы хотите, чтобы он выглядел точно так же, как при вводе dir в окне PowerShell, используйте следующее:

[string] $html = dir $path | Select Mode, LastWriteTime, Length, Name | ConvertTo-Html 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...