Windows计划任务执行PowerShell脚本时无法打开批处理窗口问题
我有一个运行批处理程序的PowerShell脚本,手动在PowerShell窗口里跑、或者右键选“用PowerShell运行”都正常,但通过Windows计划任务执行时,批处理的窗口打不开,进程只在任务管理器里挂着处于空闲状态。
计划任务里的命令是:PowerShell.exe C:\....\myscript.ps1
PowerShell脚本里启动批处理的命令:Start-Process c:\BATS\....\mybatch.bat -Wait
任务设置成了仅在我登录时每日运行,我知道-Wait是让PowerShell等批处理跑完再继续。
调整计划任务的PowerShell启动参数
给PowerShell加上-NoProfile -ExecutionPolicy Bypass,避免加载用户配置文件带来的环境差异,命令改成:PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\....\myscript.ps1"给Start-Process加窗口控制参数
在脚本的Start-Process里明确指定窗口模式,保证批处理窗口能正常启动,修改成:Start-Process c:\BATS\....\mybatch.bat -Wait -WindowStyle Normal
如果需要强制前台显示,也可以用-WindowStyle Maximized,PowerShell 7及以上版本还能加-ForegroundWindow参数。检查批处理的环境依赖
手动运行时的环境变量(比如PATH)和计划任务的环境可能不一样,批处理里用到的命令或工具如果不在系统默认PATH里,要么在批处理里写绝对路径,要么在计划任务的「操作」→「编辑」里填好「起始于(可选)」,值设为批处理文件所在的目录。确认计划任务的权限配置
去计划任务的「常规」选项卡,要么勾选「不管用户是否登录都要运行」(如果允许后台执行但要保证批处理能跑完),要么保持「仅在用户登录时运行」但勾选「最高权限运行」,避免权限不够导致进程卡住。
内容的提问来源于stack exchange,提问作者DocDJ

