2016-07-14 90 views
3

我有一個數組失去它時,通過電子郵件發送,並在Outlook中查看其格式的方式問題2013PowerShell的電子郵件發送陣列

格式化的陣列看起來像這樣在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 UP 0
vServer的-LB-4 UP 0
vServer的-LB-5 UP 0
vServer的-LB-6 UP 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 /控制檯的緩衝區。因此,如果您的表寬度超過了您的Shell/Console上的緩衝區寬度,表格將不會完整顯示。

爲了避開這一點,你可以用下面的腳本開始時設置你的shell緩衝區:

$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