Script Powershell impossible d'envoyer à plusieurs destinataires
Je suis à l'aide d'un script powershell qui va créer un rapport HTML de l'espace disque et de l'envoyer comme e-mail. Malheureusement, je suis incapable d'obtenir le script pour envoyer à plus d'un destinataire de courrier électronique. Le script que j'utilise peut être trouvé ici:
http://gallery.technet.microsoft.com/scriptcenter/6e935887-6b30-4654-b977-6f5d289f3a63
Voici les parties pertinentes du script...
$freeSpaceFileName = "FreeSpace.htm"
$serverlist = "C:\sl.txt"
$warning = 90
$critical = 75
New-Item -ItemType file $freeSpaceFileName -Force
Function sendEmail
{ param($from,$to,$subject,$smtphost,$htmlFileName)
$body = Get-Content $htmlFileName
$smtp= New-Object System.Net.Mail.SmtpClient $smtphost
$msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body
$msg.isBodyhtml = $true
$smtp.send($msg)
}
$date = ( get-date ).ToString('yyyy/MM/dd')
$recipients = "[email protected]", "[email protected]"
sendEmail from@email.mail $recipients "Disk Space Report - $Date" smtp.server $freeSpaceFileName
J'obtiens l'erreur suivante
New-Object : Exception calling ".ctor" with "4" argument(s): "The specified string is not in the form required for an e
-mail address."
At E:\TRIRIGA\dps_jobs\DiskSpaceReport.ps1:129 char:18
+ $msg = New-Object <<<< System.Net.Mail.MailMessage $from, $to, $subject, $body
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
OriginalL'auteur Geoff Dawdy | 2013-03-06
Vous devez vous connecter pour publier un commentaire.
MailMessage constructeur, vous utilisez seulement une adresse e-mail. Consultez la documentation MSDN
http://msdn.microsoft.com/en-us/library/5k0ddab0.aspx
Vous devez essayer d'utiliser le
Send-MailMessage
au lieu de cela parce que c'est-To
paramètre accepte un tableau d'adressesSend-MailMessage -from [email protected] -To $recipients -Subject "Disk Space Report - $Date" -smptServer smtp.server -Attachments $freeSpaceFileName
Remarque: Envoyez-MailMessage a été introduit en PowerShell v2.0 de sorte que c'est pourquoi il y a encore des exemples qui utilisent d'autres commandes. Si vous avez besoin d'utiliser v1.0, alors je vais mettre à jour ma réponse.
OriginalL'auteur Stanley De Boer
Il y a deux méthodes pour envoyer des e-mails à l'aide de PowerShell:
Pour la
Send-MailMessage
méthode (Introduire dans PowerShell Version 2):$to = "[email protected]", "[email protected]"
Pour la
System.Net.Mail
méthode (Œuvres de PowerShell Version 1):$msg.To.Add("[email protected]")
$msg.To.Add("[email protected]")
OriginalL'auteur ian0411
Je recommande l'utilisation de envoyer-mailmessage dans powershell au lieu de définir votre propre fonction. Ma conjecture est que vous avez une incompatibilité de type sur l'un de vos paramètres.
OriginalL'auteur user2141614
essayez ceci:
oui.. j'avais poster une nouvelle solution! Sur powershell v3.0 je n'ai eu aucune erreur, mais e-mail à la deuxième destinataire n'a jamais été envoyer. De cette façon, le $msg.pour est droit peuplée.
OriginalL'auteur CB.