Ceci est le script PowerShell ci-dessous. Je essaie d'exporter les résultats de la requête dans le corps de l'e-mail. Cependant, l'e-mail ne contient rien sauf les en-têtes de tableau. Pourriez-vous aider à identifier ce qui pourrait être faux /incomplet?
# Créer un DataTable
$table = New-Object system.Data.DataTable "bugs"
$col1 = New-Object system.Data.DataColumn bug_id,([string])
$col2 = New-Object system.Data.DataColumn bug_status,([string])
$col3 = New-Object system.Data.DataColumn resolution,([string])
$col4 = New-Object system.Data.DataColumn short_desc,([string])
$col5 = New-Object system.Data.DataColumn deadline,([string])
$table.columns.add($col1)
$table.columns.add($col2)
$table.columns.add($col3)
$table.columns.add($col4)
$table.columns.add($col5)
# Ce code définit la chaîne de recherche dans la table de la base de données
$SQLQuery = "SELECT bug_id,
bug_status,
resolution,
short_desc,
deadline
FROM bugs
WHERE ( bug_status IN ( 'RESOLVED', 'VERIFIED', 'INTEST' )
AND deadline BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 30 DAY)
)
OR ( bug_status IN ( 'RESOLVED', 'VERIFIED', 'INTEST' )
AND deadline BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND
CURDATE() )
ORDER BY deadline ASC
"
# Ce code se connecte au serveur SQL et récupère les données
$MySQLAdminUserName = 'user_name'
$MySQLAdminPassword = 'password'
$MySQLDatabase = 'mantis'
$MySQLHost = ''
$ConnectionString = "server=" + $MySQLHost + ";port=3306;uid=" + $MySQLAdminUserName + ";pwd=" + $MySQLAdminPassword + ";database="+$MySQLDatabase
[void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\Devolutions\Remote Desktop Manager Free\MySQL.Data.dll")
$Connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$Connection.ConnectionString = $ConnectionString
$Connection.Open()
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand($SQLQuery, $Connection)
$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command)
$DataSet = New-Object System.Data.DataSet
$RecordCount = $dataAdapter.Fill($dataSet, "data")
$DataSet.Tables[0]
# Créer une version HTML du DataTable
$html = ""
foreach ($row in $table.Rows)
{
$html += "" + "" + $row[2] + ""
}
$html += "bug_idbug_statusresolutionshort_descdeadline" + $row[0] + "" + $row[1] + ""
# Envoyer l'e-mail
$smtpserver = "smtp.server.net"
$from = "test@test.com"
$to = "test2@test2.com"
$subject = "Hello"
$body = $DataSet.Tables[0] | convertto-html ;
Send-MailMessage -smtpserver $smtpserver -from $from -to $to -subject $subject -body $body -bodyashtml
Erreur après l'exécution du script -
Send-MailMessage : Impossible de convertir 'System.Object[]' en type 'System.String' requis par le paramètre 'Body'. La méthode spécifiée n'est pas prise en charge.
À C:\Users\ai\Desktop\testMail2.ps1:63 char:85
+ Send-MailMessage -smtpserver $smtpserver -from $from -to $to -subject $subject -body <<<< $body -bodyashtml
+ CategoryInfo : InvalidArgument: (:) [Send-MailMessage], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.SendMailMessage