2016-07-14 2 views
3

У меня возникли проблемы с тем, как массив теряет форматирование, когда он по электронной почте и смотреть в перспективе 2013PowerShell Emailing Массивы

Отформатированная массив выглядит в PowerShell

vServer           State    Connection               
-------           -----    ----------               
vServer-LB-1          UP    0                 
vServer-LB-2          DOWN    0                 
vServer-LB-3          UP    0                 
vServer-LB-4          UP    0                 
vServer-LB-5          UP    0                 
vServer-LB-6          UP    2                    

Это как Я отформатировал массив (я пытался отправить неформатированный массив, но он по-прежнему неправильно)

$formatserver = @{Expression={$_.name};Label="vServer";width=48}, ` 
       @{Expression={$_.state};Label="State";width=17}, ` 
       @{Expression={$_.establishedconn};Label="Connection"} 

$Array = $server | Format-Table $formatserver 

Однако, когда по электронной почте (не совсем так, но это не правильно отформатирован).

VServer Состояние соединения
------- ----- ----------
VServer-LB-1 UP 0
VServer-LB-2 DOWN 0
VServer-LB-3 до 0
VServer-LB-4 UP 0
VServer-LB-5 УП 0
VServer-LB-6 УП 2

Вот код для отправки по электронной почте

$from = 'Reporting <[email protected]>' 
$to = '[email protected]' 
$subject = 'Report' 
$body = $Array | Out-String 
$smtpServer = 'mail.me.com' 

$msg = New-Object Net.Mail.MailMessage($from, $to, $subject, $body) 
#$msg.IsBodyHTML = $true 
$smtp = New-Object Net.Mail.SmtpClient($smtpServer) 
$smtp.Send($msg) 

Пожалуйста, обратите внимание, я перепробовал много комбинаций | out-string и $msg.IsBodyHTML = $true

ответ

1

Вы можете использовать <pre> тег в HTML сохранить интервал в вашей электронной почте.

$body = $Array | Out-String | %{"<pre>"+$_+"</pre>"} 

Убедитесь, что вы установили IsBodyHTML в $true.

Примечание: Таблица форматов ограничена буферами PowerShell Shell/Console. Поэтому, если ваша ширина таблицы больше, чем ширина буфера на консоли/консоли, таблица не будет отображаться полностью.

Чтобы обойти это, вы можете установить буфер оболочки в начале вашего скрипта со следующим:

$pshost = get-host 
$pswindow = $pshost.ui.rawui 
$newsize = $pswindow.buffersize 
$newsize.height = 3000 
$newsize.width = 1500 
$pswindow.buffersize = $newsize 

Или пойти File >> Properties на Шелл/консоли и изменить следующие свойства.

enter image description here

Смежные вопросы