Windows 任务计划程序运行批处理文件以调用powershell脚本

Windows 任务计划程序运行批处理文件以调用powershell脚本,windows,powershell,batch-file,task,scheduler,Windows,Powershell,Batch File,Task,Scheduler,我已经创建了一个从批处理文件调用的Powershell脚本,当我调用批处理文件时,一切正常。我遇到的问题是,我需要将批处理文件设置为在任务计划程序中运行。它开始时很好,但一直挂起,因为任务调度器从不说“操作已成功完成”(0x0)。相反,它停留在“任务当前正在运行”(0x41301)。请提供建议,我知道这不是调用Powershell脚本的最理想方式,但对于我们的环境和有限的脚本知识,它最适合我们。您应该使用任务调度器来运行Powershell 创建一个新任务,转到Actions选项卡,然后选择ne

我已经创建了一个从批处理文件调用的Powershell脚本,当我调用批处理文件时,一切正常。我遇到的问题是,我需要将批处理文件设置为在任务计划程序中运行。它开始时很好,但一直挂起,因为任务调度器从不说“操作已成功完成”(0x0)。相反,它停留在“任务当前正在运行”(0x41301)。请提供建议,我知道这不是调用Powershell脚本的最理想方式,但对于我们的环境和有限的脚本知识,它最适合我们。

您应该使用任务调度器来运行Powershell

创建一个新任务,转到
Actions
选项卡,然后选择
new…
,在这个新窗口中,您可以运行任何程序,就像从cmd运行某些程序一样

Program/script
square中,您只需放入
Powershell.exe
,然后在
中添加参数(可选)
Powershell参数。这与您在普通命令行中键入的相同:

powershell <arguments>
如果需要更多选项,只需在此之前添加常用参数:

-windowstyle hidden -executionpolicy bypass C:\LocalisationOfScript\script.ps1 "argument 1" argument2
即便如此:

-windowstyle hidden -executionpolicy bypass if (Test-path C:\script\script.ps1) { C:\script\script.ps1 "argument 1" argument2 } else { return -1 }
最后:

Start-Process Powershell.exe -argumentslist "-a -b -c copy" -windowstyle hidden -wait -erroraction stop

您甚至可以将try,catch添加到最后一个示例中。

谢谢您的评论,我研究了您的建议,遇到了我忘记添加到脚本末尾的exit命令,因此当我调用脚本时,在我将exit命令应用到脚本末尾后,它使会话保持打开状态,程序一直在运行,没有出现错误(敲敲木头)检测修复,在我关闭并重新打开任务计划程序后,最后一条运行消息更改为(0x0)

您可以直接从任务计划程序运行PowerShell脚本。您能否提供更多信息,说明脚本正在做什么,为什么需要批处理/cmd文件来运行脚本,以及一些代码示例。您可能想看看posh scheduledjobs@JaquelineVanek你需要一个新的拼写检查器。又是那个“时髦”字:)@DavidPostill这不是很有趣吗?当他们看起来对时尚一点也不感兴趣时,peeps保持着时尚标签?对不起,我有点疯了,我只是想问一个关于高级课程的问题,我自己都不是业余爱好者;)
Start-Process Powershell.exe -argumentslist "-a -b -c copy" -windowstyle hidden -wait -erroraction stop