任务计划程序 + 事件查看器,实现开机、关机、睡眠、唤醒时自动运行程序或脚本

有时候我们需要在 Windows 电源状态发生改变时执行特定的操作,例如开机后自动运行某个程序或脚本。通常情况下我们会选择使用组策略,但是一方面家庭版 Windows 默认未启用组策略,另一方面,在涉及到运行权限时组策略没有足够细致的选项。

Windows 组策略开关机脚本

为此,经过多次测试,耕读君建议使用 任务计划程序 来创建计划,同时利用 事件查看器 获取事件详细信息,从而实现精准控制。

一、获取事件详情

首先我们需要获取到开机、关机、睡眠、唤醒所对应的事件详情,以便后续在「任务计划程序」中使用。

关于电源状态改变的日志保存在 事件查看器 – Windows 日志 – 系统 分类下,经对比和确认——

1. 睡眠/关机事件

无论睡眠还是关机,事件记录都是“系统正在进入睡眠状态”,因此可得到:

日志事件ID
SystemKernel-Power42
Windows 睡眠/关机事件记录

2. 开机事件

开机后获得的事件为“系统已从低功耗状态中恢复”。

日志事件ID
SystemPower-Troubleshooter1
Windows 开机事件记录

3. 睡眠唤醒事件

睡眠唤醒后获得的事件为“系统已从睡眠状态恢复”。

日志事件ID
SystemKernel-Power107
Windows 睡眠唤醒事件记录

4. 进入 Modern Standby 连接待机

如果机器使用 Modern Standby 模式,那么点击睡眠和关机后并不会完全睡眠或关机,其网络会继续保持连接,使机器保持在低功耗状态下运行。这是系统不会触发睡眠、关机事件,因此需要单独为它设置任务计划。

日志事件ID
SystemKernel-Power506
Windows 进入 Modern Standby 事件记录

5. 退出 Modern Standby 连接待机

退出连接待机状态的事件信息如下:

日志事件ID
SystemKernel-Power107
Windows 退出 Modern Standby 事件记录

以上事件对应的信息,我在 Windows 11 和 Windows 10 上测试都是一致的。如果在你的电脑上数据不同,可自行查找。

接下来就可以开始创建任务计划,本文以自动开关电脑的无线为例,脚本可从此处获取:用命令打开和关闭 Windows 无线

二、创建任务计划

搜索打开「任务计划程序」,点击右侧菜单里的「创建任务」。

任务计划程序创建任务

1. 权限设置

首先,在「常规」页输入任务名称,描述可写可不写。账户一般不用更改,毕竟做这个设置的一般就是管理员了。需要注意下图圈起的地方:

任务计划设置

首先建议选择 不管用户是否登录都要运行 ,因为电脑上可能存在多个用户,另一方面,开机后未登录、登录后注销也是可能存在的情景。

其次是 使用最高权限运行 ,这个选项根据实际需求决定是否勾选。本例使用的脚本需要管理员权限,因此需要勾选它,否则脚本无法顺利执行。

2. 配置触发器

切换到「触发器」标签,点击 新建 按钮,需要修改和填写的就是下图圈起的区域:

任务计划程序编辑触发器

触发器可以添加多个,也就是匹配多个条件。例如在本例中,考虑到用户开机、唤醒后都需要启动无线网络,因此我添加了两个触发器:

任务计划程序编辑触发器

3. 添加脚本或程序

切换到「操作」页面,可点击 新建 按钮来添加程序或脚本的路径。

这里有一点需要注意,就是程序和脚本尽量保存在非用户目录下。

什么是用户目录呢?C 盘下有一个用户文件夹(Users),每个用户在里面都有一个和自身用户名同名的文件夹,那就是用户目录。当文件保存在某个用户目录下时,未登录状态或者其他用户很可能将无法访问该文件,就会导致程序或脚本执行失败。

任务计划程序添加脚本

从上图可以看到,我把脚本文件保存在 D 盘的文件夹中,这里的文件任何用户均可访问。

4. 修改电源条件

最后切换到「条件」页面,系统默认勾选了“只有在计算机使用交流电源时才启动此任务”,如果你使用的是笔记本,建议将此复选框取消勾选。

任务计划程序修改电源条件

最后点击确定,保存任务即可。

在本例中,电脑睡眠或关机时就会自动禁用无线网络,从睡眠状态唤醒,或者开机后,无线网络又会自动启用。这并非脱裤子放屁,目前许多笔记本都采用 Modern Standby,睡眠甚至关机后网络都会保持运行,导致机器发热掉电,通过此方法就可以避免每次都要手动开关无线网络的麻烦。

如果本文对你有帮助,欢迎点赞、评论、收藏和分享!

耕读君
耕读君

热爱科技,热爱折腾,有一个可爱的女儿

文章: 355

3 评论

  1. 感谢博主,这个思路非常棒!不过实际测试的时候发现,Modern Standby 笔记本在连接待机状态不会触发睡眠事件,导致任务计划没有执行。进入连接待机的事件ID为506,退出的事件ID为507,两个都在系统日志下,且来源均为 Kernel-Power。联系我,把日志截图分享给你。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注