Créer une chaîne de caractères pour envoyer un mail à tous les destinataires d'une requête SQL
Bonjour.
J'ai quelques difficultés avec PowerShell.
J'ai fait un script qui interroge une base de données.
Renvoie les adresse mails contenues dans une table.
Envoie un mail à un résultat choisi du dataset.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| # Force le type d'execution
Set-ExecutionPolicy Unrestricted
Import-Module sqlps
$file = 'C:\MonRep\logShell.txt'
$color = "#009900"
$Conn = new-object system.data.sqlclient.sqlconnection
$Conn.connectionstring = "Monserveur"
$Conn.Open()
# On interroge une vue système de SQL Server 2005
$Requete = "SELECT mail FROM MaTable"
$cmd = New-object system.data.sqlclient.SqlCommand
$cmd.connection = $conn
$cmd.commandtext = $Requete
# Exécute la requête et retourne le nombre de lignes
$cmd.Executenonquery()
$DataAdapter = new-object System.Data.SqlClient.SQLDataAdapter($cmd)
$DataSet = new-object System.Data.DataSet
$DataAdapter.Fill($DataSet)
$emailSmtpServer = "serveur de messagerie"
$emailSmtpServerPort = "25"
$emailFrom = "expediteur"
$emailTo = $dataset.tables[0].rows[0]["mail"]
$emailMessage = New-Object System.Net.Mail.MailMessage($emailFrom , $emailTo)
$emailMessage.Subject = "Test"
$emailMessage.Priority = "Normal"
$emailMessage.Body = "Bonjour"
$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$SMTPClient.Send( $emailMessage ) > $file
# On libére la connexion, etc.
$Conn.Close()
read-host 'Pause !' |
Mais je souhaiterai faire une concaténation de tous les mails contenus dans le dataset, logguer cette concaténation et envoyer un mail à tous les destinataires, et là, grand moment de solitude.
J'ai essayé pas mal de truc donc ça :
Code:
1 2 3 4 5 6
| $emailTo = $DataSet.Tables[0].Rows[0][0]
for ($i=0;$i -le $dataset.tables[0].rows.count;$i++)
{
$emailto = $emailto + "," + $dataset.tables[0].rows[i]["mail"] > $logfile
}
Write-Host $emailto |
Mail la par contre plus rien ne fonctionne...
Merci de votre aide.