6

ディスク容量の HTML レポートを作成し、電子メールとして送信する powershell スクリプトを使用しています。残念ながら、スクリプトを複数の電子メール受信者に送信することはできません。私が使用しているスクリプトは次の場所にあります。

http://gallery.technet.microsoft.com/scriptcenter/6e935887-6b30-4654-b977-6f5d289f3a63

スクリプトの関連部分は次のとおりです...

$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 = "to1@email.com", "to2@email.com"
sendEmail from@email.mail $recipients "Disk Space Report - $Date" smtp.server $freeSpaceFileName

次のエラーが表示されます

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:\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
4

6 に答える 6

8

使用している MailMessage コンストラクターは、メール アドレスを 1 つだけ受け取ります。MSDN のドキュメント http://msdn.microsoft.com/en-us/library/5k0ddab0.aspxを参照してください。

パラメータはアドレスの配列を受け入れるSend-MailMessageため、代わりに使用してみてください-To

Send-MailMessage -from from@email.mail -To $recipients -Subject "Disk Space Report - $Date" -smptServer smtp.server -Attachments $freeSpaceFileName

注: Send-MailMessage は PowerShell v2.0 で導入されたため、他のコマンドを使用する例がまだ残っています。v1.0 を使用する必要がある場合は、回答を更新します。

于 2013-03-06T20:55:50.890 に答える
1

これを試して:

Function sendEmail 
{ param($from,[string[]]$to,$subject,$smtphost,$htmlFileName) 
$body = Get-Content $htmlFileName 
$smtp= New-Object System.Net.Mail.SmtpClient $smtphost 
$msg = New-Object System.Net.Mail.MailMessage 
$msg.from =$from

foreach($a in $to)
{
   $msg.to.Add($a)
}

$msg.Subject= $subject
$msg.Body = $body 
$msg.isBodyhtml = $true 
$smtp.send($msg) 
} 

sendemail  -from from@email.mail -to $recipients -smtphost smtp.server -subject "Disk Space Report - $Date" -htmlFileName  $freeSpaceFileName
于 2013-03-06T20:08:04.437 に答える
0

独自の関数を定義する代わりに、powershell で send-mailmessage を使用することをお勧めします。私の推測では、パラメーターの 1 つでタイプの不一致があると思われます。

于 2013-03-06T20:15:50.670 に答える