我有一个通过 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"