软件吧
登录注册账号
/posts/win10-fast-startup-exist
电脑必备

给全公司电脑配了套开机自启脚本,跑了一周发现有些机子根本没执行

极客阿凯 72 0 13

上个月给公司两百来台办公机做了套开机自启的初始化脚本,主要干三件事:同步共享盘映射、清临时目录、按部门配打印机。写好之后拿六台样机跑了一周,都正常,就统一下发了。

结果第二周陆陆续续有人反馈映射盘没了、打印机也找不到。我先没甩锅给用户,直接翻日志,发现失败的基本是同一个规律:休眠唤醒之后不执行,只有彻底关机再开机才跑。

查了一下,问题出在我把脚本挂在「计算机启动」组策略上,而 Win10/11 的快速启动(Fast Startup)本质上是一种混合休眠,唤醒的时候走的是恢复流程,不是完整的启动流程,所以计算机启动脚本压根没触发。

我做了几组对比测试,数据如下:

  • 方案A:组策略计算机启动脚本 —— 冷启动 6/6 执行,休眠唤醒 0/6 执行。
  • 方案B:任务计划程序,触发器选「登录时」 —— 冷启动 6/6,唤醒后登录 6/6,但有个坑,多用户同时登录会重复执行,得加个互斥锁。
  • 方案C:任务计划程序,触发器选「事件 ID 1074 / 6005」 —— 6005 是事件日志服务启动,能覆盖大部分启动场景,但快速启动下这个事件也不会发。

最后我采用的是 B + 互斥锁,脚本开头加了个 if exist %temp%\init.lock exit,跑完删锁。多机复现了三天,二十台机器轮着休眠唤醒,全部正常。

另外提醒一点:组策略计算机启动脚本默认还有 600 秒超时限制,我那个同步共享盘偶尔要跑两分多钟,如果网络慢一点就可能被掐断,日志里会留下 7016 或者 1500 事件。这个坑比快速启动还隐蔽,因为掐断的时候脚本看起来「跑过了」。

教训就是:默认配置里藏着的隐性行为,不实际复现根本发现不了。我现在推任何启动类脚本,必测三个场景:冷启动、休眠唤醒、多用户切换。少一个都不敢上线。

你们那边批量部署开机脚本的时候,是走组策略还是任务计划?有没有碰到快速启动这层坑?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。