命令在命令行上运行良好,但不能从任务计划程序运行
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"
。
【讨论】:
以上是关于命令在命令行上运行良好,但不能从任务计划程序运行的主要内容,如果未能解决你的问题,请参考以下文章
在命令行上运行 Apache Ignite 时创建 Ignite 组件失败