3

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

3 回答 3

8

在查看类似问题时,我发现了另一个可能的问题。我无法将 PowerShell 脚本作为任务计划程序操作执行,即使该脚本在以目标用户身份登录 Windows 并在 PowerShell 中运行时正确运行。

当我使用我认为是正常的 PowerShell 引用规则在任务的操作参数中指定脚本时,任务计划程序会始终显示 0xFFFD0000 错误:

-ExecutionPolicy Bypass -File 'D:\full path\to\script.ps1'

当我将使用的引号从单引号更改为双引号时,PowerShell 默许并且任务计划程序立即启动任务并且没有问题:

-ExecutionPolicy Bypass -File "D:\full path\to\script.ps1"

进入命令提示符并执行完整命令立即发现问题:

D:\>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File 'D:\full path\to\script.ps1'

Processing -File ''D:\full path\to' failed: The given path's format is not supported. Specify a valid path for the -File parameter.

注意路径前两个单引号和后一个单引号的奇怪用法。

故事的寓意:当将脚本的完整路径作为命令行参数提供给 PowerShell 时,请使用双引号!

于 2014-03-26T18:48:24.690 回答
5

我收到了同样的错误,最终我遇到了一个不同的问题 - 目录设置中的可选开始没有应用。

本质上,我正在运行一个 .bat 文件 - c:\tasks\process.bat

这个 .bat 文件引用了 tasks 目录中的多个 ps1 脚本,并且引用只是按文件名(不是完整目录)。在任务计划程序的操作选项卡上,有一个我没有填充的开始(可选)字段。将其设置为 c:\tasks 允许引用正常运行。

于 2013-08-30T13:00:10.803 回答
0

首先,您必须检查您机器上配置的“ExecutionPolicy”。为此,请通过以下链接检查默认值https://technet.microsoft.com/en-us/library/hh847748.aspx

我使用以下命令解决了我的问题:在“添加参数”选项上,我输入了:

"-Executionpolicy Bypass -command "& 'T:\deleteOldMessages.ps1'"

1

1

于 2016-11-02T13:07:01.753 回答