Après Kixtart, Perl et Python, voici le tour de PowerShell !
Je découvre ce langage de script proposé par Microsoft et disponible depuis XP jusqu’à 2008 Server R2.
Comme à mon habitude, je vais vous faire partager quelques bouts de code que j’ai assemblé.
J’ai écrit à partir de plusieurs sources, la fonction suivante :
# envoi un email
function SendEmail {
param(
[System.String[]] $EmailTo, [System.String] $Subject, [System.String] $Body=””, [System.String[]] $Attachments)
## adresse de l’expéditeur
$EmailFrom = “SomeEmailAddress@gmail.com”
## nom d’authentifiation SMTP
$username = ” SomeEmailAddress @gmail.com”
## mot de passe d’authentifiation SMTP
$password = “SomePassword”
## serveur SMTP
$SMTPServer = “smtp.gmail.com”
## port SMTP
$SMTPPort = 587
## initialisation des outils Email
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, $SMTPPort)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($username, $password);
## création du message
$emailMessage = New-Object System.Net.Mail.MailMessage
## expéditeur
$emailMessage.From = $EmailFrom
## destinataires
foreach ($item in $EmailTo) {
if ($debug) {Write-Host $item}
$emailMessage.To.Add($item)
}
## sujet
$emailMessage.Subject = $Subject
## corps
$emailMessage.Body = $Body
## pièces jointes
if ($Attachments -cne $null)
{
foreach ($file in $Attachments) {
if ($debug) {Write-Host $file}
$emailMessage.Attachments.Add($file)
}
}
## envoie de l’émail
$SMTPClient.Send($emailMessage)
}
Vous noterez que l’adresse de l’expéditeur et les identifiants GMAIL sont codés dans la fonction.
Cette fonction reçoit 4 arguments :
[System.String[]] $EmailTo, un tableau d’adresse email de destination
[System.String] $Subject, le sujet du mail [System.String] $Body=””, le corps textuel du mail – par défaut, il est vide [System.String[]] $Attachments Un tableau de pièces jointes – peut être $nullL’évocation du script se fera donc de la fonction suivante :
## destinataires
$destinataires = “SomeEmailAddress@gmail.com”,” SomeEmailAddress@free.fr”
$ Attachments = « c:somefile.txt », « d:somefile.xml »
SendEmail $destinataires « Sujet »” « Corps » $ Attachments
En ajoutant la ligne suivante, il est possible d’envoyer un email dont le corps est code en HTML
$ emailMessage.IsBodyHTML = $true
La séquence suivante permet de placer le contenu du fichier textuel « c:sometextfile.txt » dans le corps du mail.
$Body = [string]::join([environment]::NewLine, (get-content “c:sometextfile.txt »))
SendEmail $destinataires « Sujet » ” $Body
Suis un peu débutant en informatique pourriez vous faire ce tuto en vidéo pour me permettre de mieux comprendre merci a vous
Bonjour je suis à la recherche du même script mais compatible avec la version 4.0 de PowerShell (présente sur 2012r2).
En effet j’ai eu beau essayé plusieurs scripts trouvés sur le Net permettant l’envoi d’un mail automatique via Gmail, aucun ne fonctionne depuis mon serveur 2012r2.
Si quelqu’un a un script fonctionnel a partager.
Merci d’avance
hello sir
i have use you script,
but i dont ge any resultats
non errore, but insensible…
my best regard
arnold
effectivement
merci du tuyau
quelques exemples ici
Bonjour
Merci beaucoup pour ces articles sur PowerShell.
Pour les mails, à noter qu’en V2 on y trouve en natif la commande send-mailmessage, elle est très complète