任务计划程序无法启动部分PowerShell作业问题咨询
问题根因匹配
你遇到的PowerShell System.Runtime.InteropServices.COM + WaitHandle.WaitOneNative 报错,是典型的非交互式会话下调用UAC提权接口失败导致的启动崩溃,和你bat文件里的冗余提权逻辑直接相关。
修复步骤
- 简化批处理脚本,删除多余的二次提权逻辑
任务计划程序如果已经勾选了「使用最高权限运行」,不需要再在脚本中用Start-Process -Verb RunAs重复提权。没有交互式桌面的会话0环境下,UAC提权请求无法正常弹出,会直接导致PowerShell进程崩溃。修改后的bat参考如下:
@ECHO OFF SET PsScriptDirectory=%~dp0 SET PsScriptPath=%PsScriptDirectory%unknown.ps1 PowerShell -NoProfile -ExecutionPolicy Bypass -File "%PsScriptPath%"
- 调整任务计划并发配置
打开三个作业的属性页,在「设置」标签下找到「如果任务已在运行,则以下规则适用」选项,设置为「并行运行新实例」,避免前序脚本未执行完成时,后续作业被系统默认拦截。 - 排查脚本独占资源冲突
如果修改后还是只有最后一个作业能运行,检查你的PowerShell脚本内部是否存在独占资源占用逻辑:比如写入同一份日志文件、抢占同一个独占式COM对象、请求同一接口的频率限制。如果脚本单次执行时长超过5分钟,前两个作业会因为资源抢占失败直接退出,可以临时把作业触发间隔调整为15分钟验证是否是该问题。
内容的提问来源于stack exchange,提问作者ste92
相关产品推荐
相关产品推荐

