2017-05-12 28 views
0

メールは送信されません。何らかのTry/Catchループが必要ですか? Powershellでこれをチェックする最善の方法は何でしょうか?Send-MailMessage:パラメータ 'Subject'の引数を検証できません。

一つの場所が、それはまだ他の人を送り出すとレポートが送られたメッセージの格言を表示し、レポートをフォルダ

で発見されたかどうかに応じてされなかったことが判明していない場合、私はそれがそれぞれのためにチェックする必要があると

Send-MailMessage:パラメータ 'Subject'の引数を検証できません。引数がnullまたは空です。 nullまたは空でない引数、つまり を指定してから、コマンドをもう一度実行してください。

#Defines Directory 
    $dir = "C:\Users\user\Desktop\reprts\Todays" 
    #Sets STMP server 
    $SMTPServer = "10.0.0.46" 
    #Declares todays time and formats 
    $Time = (Get-Date).ToString('MM/dd/yyyy hh:mm tt') 

    $japan = @{    
     Name = 'japan' 
     From = "[email protected]" 
     To = "[email protected]" 
     Cc = "[email protected]" 
    } 

    $ireland = @{ 
     Name = 'ireland' 
     From = "[email protected]" 
     To = "[email protected]" 
     Cc = "[email protected]" 
    } 

    $spain = @{    
Name = 'spain' 
From = "[email protected]" 
To = "[email protected]" 
Cc = "[email protected]" 
    } 


    $_Regions = @() 
    $_Regions += New-Object PSObject -Property $japan 
    $_Regions += New-Object PSObject -Property $ireland 
    $_Regions += New-Object PSObject -Property $spain 


    ForEach ($_Region in $_Regions) { 

     #Searches dir for list , formats 
     $Attachment = Get-ChildItem -Path $dir -Filter "*$($_Region.name)*"    -Recurse 
     $AttachmentName = $Attachment.BaseName 

     $Subject = "$AttachmentName" 
     $Body = "Please find attached the Missing Image Report for  $($_Region.name). 

     Produced @ $Time 

     Regards, 
     John Doe 
     " 
     #Actions Email 
     Send-MailMessage -From $_Region.From -To $_Region.To -CC    $_Region.Cc -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Attachments    $Attachment.FullName 
     $Attachment | Move-Item -Destination "C:\Users\user\Desktop\reprts\old" 

}

+0

を失敗したメッセージ、とされます。あなたの一部のデバッグは順調です。 '$ Subject'への代入につながるプロセスの各段階で関連する値をチェックしようとしましたか? –

+0

件名を追加していないか、またはnullの場合、Send-MailMessageへの呼び出しを示すコードではないので、私は推測するつもりです。エラーは問題に関して絶対に正しいです。このコードでは '$件名 'が表示されていません – Matt

+0

あなたはこの質問を二度聞いたことがあり、最初の方が良かったです。それでも問題が解決しない場合は、最初の質問を関連情報とともに編集してください。彼らの答えの著者にpingをして、彼らがあなたを再び助けることができるかどうかを確認することができます。質問の再投稿は避けてください。 – Matt

答えて

0

私はいくつかのエラー処理を追加しました。

地域のオブジェクトは、それが成功したかどうか送信した場合、返されますが、/なぜそれはあなたが報告されているエラーメッセージは、問題が何であるかを語っている

#Defines Directory 
$dir = "C:\Users\user\Desktop\reprts\Todays" 
#Sets STMP server 
$SMTPServer = "10.0.0.46" 
#Declares todays time and formats 
$Time = (Get-Date).ToString('MM/dd/yyyy hh:mm tt') 

$_Regions = @(
    @{    
     Name = 'japan' 
     From = "[email protected]" 
     To = "[email protected]" 
     Cc = "[email protected]" 
    }, 
    @{ 
     Name = 'ireland' 
     From = "[email protected]" 
     To = "[email protected]" 
     Cc = "[email protected]" 
    }, 
    @{    
     Name = 'spain' 
     From = "[email protected]" 
     To = "[email protected]" 
     Cc = "[email protected]" 
    } 
) 


ForEach ($_Region in $_Regions) { 
    $null = $_Region.add('action','Starting work') 
    #Searches dir for list , formats 
    try { 
     $Attachment = Get-ChildItem -Path $dir -Filter "*$($_Region.name)*" -Recurse -ErrorAction Stop 
     $AttachmentName = $Attachment.BaseName 

     $Subject = "$AttachmentName" 
     $Body = "Please find attached the Missing Image Report for $($_Region.name). 

    Produced @ $Time 

    Regards, 
    John Doe 
    " 
     #Actions Email 
     Send-MailMessage -From $_Region.From -To $_Region.To -CC $_Region.Cc -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Attachments $Attachment.FullName -ErrorAction Stop 
     $Attachment | Move-Item -Destination "C:\Users\user\Desktop\reprts\old" -ErrorAction Stop 
     $_Region.action = 'success' 
    } 
    catch { 
     $_Region.action = $_ #catching the error 
    } 
    finally { 
     $_Region | Select-Object name, action 
    } 
} 
関連する問題