2016-07-14 7 views
3

ich Probleme mit der Art und Weise, die ein Array seine Formatierung verliert, wenn es per E-Mail und in Outlook 2013Powershell Emailing Arrays

Das formatierte Array

wie diese gesehen
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                    

in Powershell sieht Dies ist, wie ich formatiert das Array (ich habe versucht, die unformatierte Array per E-Mail, aber es ist immer noch falsch)

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

$Array = $server | Format-Table $formatserver 

wenn jedoch per E-Mail (nicht ganz so, aber es ist nicht richtig formatiert).

vServer State Verbindung
------- ----- ----------
vServer-LB-1 UP 0
vServer-LB-2 AB 0
vServer-LB-3 schon mit 0
vServer-LB-4 UP 0
vServer-LB-5 UP 0
vServer-LB-6 UP 2

Hier ist der Code für

$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) 

E-Mail Bitte beachten Sie, ich viele Kombinationen von | out-string und $msg.IsBodyHTML = $true

Antwort

1

Sie können die <pre> Tag in HTML verwenden versucht haben, den Abstand in Ihre E-Mails zu halten.

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

Stellen Sie sicher, dass Sie IsBodyHTML als $true gesetzt.

Hinweis: Tabelle Formate begrenzt auf die Puffer Ihrer PowerShell Shell/Console. Wenn Ihre Tabellenbreite also größer ist als die Pufferbreite Ihrer Shell/Konsole, wird die Tabelle nicht vollständig angezeigt.

Um diese Runden Sie Ihre Shell-Puffer zu Beginn des Skripts mit dem folgenden einstellen:

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

Oder gehen Sie zu File >> Properties auf Ihrer Shell/Konsole und ändern Sie die folgende Eigenschaft.

enter image description here