У меня нет mysql db для проверки, но вам нужно преобразовать $ ds.tables в объект, который можно преобразовать, по крайней мере, во фрагмент HTML, если нет, просто в целую страницу HTML :
$ds.tables | Convertto-HTML
или
$ds.tables | Convertto-Html -Fragment
, если это не дает правильного отображения данных (PowerShell будет выполнять много преобразований данных от вашего имени, если это так), вам нужно взять объект .Tables Collection и преобразовать его в объект, который можно преобразовать во фрагмент HTML:
Обычно я выполняю этот тип работы, сначала преобразовывая базовый объект Collection в массив, а затем выполняю преобразование
@($ds.tables) | Covnertto-Html
Изменить 1:
Кроме того, в командлете Send-MailMessage вы захотите использовать свойство -BodyAs Html $ true
Редактировать 2:
Вот более ясные правки, которые я предлагал:
$arr = @($ds.Tables) ## Have PowerShell change the type from a probably SqlDataTable to an Array
-- Compile the e-mail
$From = "test@gmail.com"
[string[]]$To = "Me@gmail.com"
$Subject = "Test Subject"
$Body = ($arr | ConvertTo-Html) ## Convert to the array to an HTML page
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$password = "Password1" | ConvertTo-SecureString -asPlainText -Force
$username = "test@gmail.com"
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
Send-MailMessage -From $From -to $To -Subject $Subject -BodyAsHtml $true ` ## Added the flag to allow the email to be sent in HTML format
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential $credential