J'essaie d'utiliser Powershell pour sortir une table avec du contenu pre/post et l'envoyer par e-mail, mais le contenu pré/post apparaît dans l'e-mail en tant que "System.String []". Le reste du contenu semble correct, et si je publie la chaîne HTML dans la console, tout va bien.Convertto-HTML produisant du contenu pré/post apparaissant comme System.String [] au lieu du contenu réel
function Send-SMTPmail($to, $from, $subject, $smtpserver, $body) {
$mailer = new-object Net.Mail.SMTPclient($smtpserver)
$msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body)
$msg.IsBodyHTML = $true
$mailer.send($msg)
}
$Content = get-process | Select ProcessName,Id
$headerString = "<table><caption> Foo. </caption>"
$footerString = "</table>"
$MyReport = $Content | ConvertTo-Html -fragment -precontent $headerString -postcontent $footerString
send-SMTPmail "my Email" "from email" "My Report Title" "My SMTP SERVER" $MyReport
apparaît dans mon email:
System.String[]
ProcessName Id
... ...
System.String[]
Faire un hors fichier, puis un Invoke-élément a les mêmes résultats que l'envoi de l'e-mail ...
Vous avez sauvé ma santé mentale. Out-String, FTW. – JakeRobinson
si votre contenu est large, assurez-vous d'utiliser 'Out-String -Width ([int] :: MaxValue)' car la largeur de ligne par défaut de 'Out-String' est de 80 caractères. Il peut casser des lignes au milieu d'une balise HTML, brisant le balisage. –