ConvertTo-Html возвращает список объектов - некоторые являются строками, а некоторые являются строковыми массивами, например:
407# $headerString = "<table><caption> Foo. </caption>"
408# $footerString = "</table>"
409# $content = Get-Date | select Day, Month, Year
410# $MyReport = $Content | ConvertTo-Html -Fragment -PreContent $headerString `
-PostContent $footerString
411# $MyReport | Foreach {$_.GetType().Name}
String[]
String
String
String
String
String
String
String
String
String
String[]
Таким образом, $ MyReport содержит массив как строк, так и строковых массивов.Когда вы передаете этот массив конструктору MailMessage, который ожидает строку типа, PowerShell пытается принудительно преобразовать это в строку.Результат:
412# "$MyReport"
System.String[] <table> <colgroup> <col/> <col/> <col/> </colgroup> <tr><th>Day
</th><th>Month</th><th>Year</th></tr> <tr><td>9</td><td>2</td><td>2011
</td></tr> </table> System.String[]
Простое решение - запустить вывод от ConverTo-Html
до Out-String
, что приведет к тому, что $ MyReport будет представлять собой одну строку:
413# $MyReport = $Content | ConvertTo-Html -Fragment -PreContent $headerString `
-PostContent $footerString |
Out-String
414# $MyReport | Foreach {$_.GetType().Name}
String