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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !'
J'ai essayé pas mal de truc donc ça :Mail la par contre plus rien ne fonctionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci de votre aide.
Partager