命令在命令行上运行良好,但不能从任务计划程序运行

Posted

技术标签:

【中文标题】命令在命令行上运行良好,但不能从任务计划程序运行【英文标题】:Command runs fine on command line but not from Task Scheduler 【发布时间】:2013-07-21 14:34:47 【问题描述】:

Windows 7 64 位上的 PowerShell 2.0

当我在 shell 中测试时,以下工作正常:

powershell -command  sleep 5      

但是,当我在计划任务中使用此功能时,在“程序”框中使用 powershell,在“参数”框中使用 -command sleep 5 ,任务计划程序会报告“操作成功完成。(0x0)”但没有运行任何内容。

我不得不用摄像机记录屏幕,然后以慢动作回放以了解发生了什么。 PowerShell 配置文件脚本运行后,sleep 5 在屏幕上显示且没有错误,并且 PowerShell 立即关闭。

(我的 x86 和 x64 版本都将 ExecutionPolicy 设置为 RemoteSigned。)

我必须做什么才能使-command 在任务计划程序中工作? .

【问题讨论】:

问题是任务计划程序使用默认shell运行命令,不幸的是仍然是cmd。要测试任务计划程序的命令,请在 cmd 提示符而不是 PowerShell 提示符下运行它。如果您在 cmd 中尝试 powershell -command sleep 5 ,您将看到任务计划程序运行它时所看到的确切内容。但是,如果您按照以下答案中的建议使用引号而不是花括号,它将根据需要等待 25 秒。 谢谢。我可以重现您描述的从 cmd 运行的内容,这与我在任务计划程序输出中看到的内容相似。 powershell 的命令行语法帮助明确指出,只有在 PowerShell 中运行 powershell.exe 时,才能为 -Command 参数指定脚本块。您可以像这样从 cmd 传递一个脚本块:"& <code>"。但是,如果没有 & 和花括号也能正常工作,那么这样做是没有意义的。 【参考方案1】:

改用powershell -Command "sleep 5"

【讨论】:

以上是关于命令在命令行上运行良好,但不能从任务计划程序运行的主要内容,如果未能解决你的问题,请参考以下文章

从命令行运行但不能通过 cron 运行时脚本运行良好

在命令行上运行 Apache Ignite 时创建 Ignite 组件失败

从脚本在命令行上运行 MySQL 查询 [重复]

使用任务计划程序创建任务以使用命令运行 cmd.exe

BAT 文件不会在 Windows 10 任务计划程序中运行,但会以管理员身份或在提升的命令提示符下运行

Powershell 脚本无法使用任务计划程序通过 Outlook 发送电子邮件