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
SynerGeek.fr Informatique & Veille Technologique
