SMTP 経由で電子メールを送信する PowerShell スクリプトがあります。スクリプトは Powershell ISE 内では正常に実行されますが、タスク スケジューラでは失敗します。私は Windows Server 2012 を使用しています。まったく同じセットアップを使用してこのサーバーで実行する他の Powershell スクリプトがありますが、それらのスクリプトは電子メールを送信しません。タスク スケジューラに表示されるリターン コードは (0xFFFD0000) で、これに関する情報が見つかりません。最高の特権で実行するようにタスクを設定し、実行ポリシーが RemoteSigned であることを確認しました。誰もこれに遭遇しましたか?
タスクのコマンドは次のとおりです。
powershell -f "c:\scripts\EmailTest.ps1"
スクリプトは次のとおりです。
$EmailFrom = "user@domain.com"
$EmailTo = "someone@somewhere.com"
$Subject = "Email Subject"
$Body = @"
Person,
Some message here
Thanks,
User
"@
$SMTPServer = "smtp.domain.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("user@domain.com", "password");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
更新: 問題を解決できました。どうやら、コメントアウトされたスクリプトに追加の行があったようです。なぜこれがエラーの原因になるのかはわかりませんが、コメントアウトされた行を削除すると、タスク スケジューラで正常に動作しました。コメントは次のようになり、上記のスクリプトの他の $EmailTo 宣言のすぐ下にありました。
#$EmailTo = "someone@somewhere.com"