# 计划任务与唤醒定时器：谁在半夜叫醒你的电脑

> 找出登录时或按计划运行的任务、判断哪些能唤醒机器，以及该关哪一个。

**测试环境**

- 版本号: 26300.9457 / 26100.33650
- 版本: Pro (26H2) / Server
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

计划任务是继 `Run` 键与启动文件夹之后的**第三个自启动机制**。任务管理器**看不到**它。

两个属性决定它是否影响你：

- **触发器**——登录时、启动时、每天、空闲时、事件触发。
- **唤醒计算机运行此任务**——能否把机器从睡眠中叫起来。

```powershell
Get-ScheduledTask |
  Where-Object { $_.Triggers.CimClass.CimClassName -match 'Logon|Boot' } |
  Select-Object TaskPath,TaskName,State |
  Sort-Object TaskPath | Format-Table -AutoSize
```

## 找出真正在跑的

```powershell
Get-ScheduledTask |
  Where-Object { $_.State -ne 'Disabled' -and ($_.Triggers | Where-Object { $_.CimClass.CimClassName -eq 'MSFT_TaskLogonTrigger' }) } |
  Select-Object TaskPath,TaskName

Get-ScheduledTask |
  Where-Object { $_.Settings.WakeToRun -eq $true -and $_.State -ne 'Disabled' } |
  Select-Object TaskPath,TaskName

powercfg /waketimers
powercfg /lastwake
```

`powercfg /waketimers` 列**待触发的**唤醒定时器；`/lastwake` 告诉你最近一次是什么叫醒的。两者合起来能回答"为什么凌晨三点开着机"，不用猜。

## 禁用之前先读任务

```powershell
$t = Get-ScheduledTask -TaskPath '\Microsoft\Windows\UpdateOrchestrator\' -TaskName 'Schedule Scan'
$t.Actions | Select-Object Execute,Arguments
$t.Triggers | Select-Object CimClass,StartBoundary,Enabled
$t.Settings | Select-Object WakeToRun,DisallowStartIfOnBatteries,ExecutionTimeLimit
```

看 **Execute + Arguments**：任务名很少和它实际做的事一致。

| 任务区域 | 是什么 | 能禁吗 |
|---|---|---|
| `\Microsoft\Windows\UpdateOrchestrator\*` | 更新扫描与安装 | 不要长期禁 |
| `\Microsoft\Windows\Defender\*` | 扫描 | 调时间，不要禁 |
| `\Microsoft\Windows\DiskCleanup\*` | 静默清理 | 可以 |
| `\Microsoft\Windows\Application Experience\*` | 遥测/CEIP 作业 | 可以，纯属美观 |
| 厂商更新任务 | 驱动/BIOS 检查 | 自行判断 |

> **警告: 禁用更新任务不等于停更**
>
> Windows 更新有多条路径（orchestrator、USO、服务）。禁用单个计划任务不是受支持的更新控制方式，只会让时机变得不可预测。用更新策略设置。

## 唤醒定时器：凌晨三点的问题

机器自己醒来通常是：

- **唤醒定时器**（媒体、备份、更新），
- 其他设备发来的**网络唤醒**包，
- 允许唤醒系统的 **USB 设备**，
- 笔记本的 **Modern Standby** 后台活动。

```powershell
Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceWakeEnable |
  Where-Object Enable -eq $true | Select-Object InstanceName,Enable
```

在**设备管理器 → 设备 → 电源管理 → 允许此设备唤醒计算机**里逐项关闭，或用 `powercfg /devicequery wake_armed`。

## 安全的操作流程

1. 列出启用的登录/启动任务，记下你认识的厂商。
2. 列出唤醒定时器；如果这是台该睡眠的台式机，关掉具体任务的定时器。
3. 观察一晚再验证。
4. 记下你关了什么——功能更新把它们重新打开后，未来的你会需要这份记录。

## 相关

- [开机那一分钟去哪了](https://winbook.fyi/zh/windows/perf/boot-time/)
- [服务：哪些能关、哪些别碰](https://winbook.fyi/zh/windows/perf/services/)
- [睡眠、休眠与快速启动](https://winbook.fyi/zh/windows/perf/sleep-hibernate-faststartup/)

## 实验室边界

E1。任务计划程序与 `powercfg` 行为有微软文档依据。实验室虚拟机没有真实睡眠状态，未复现唤醒事件。

## 来源

- [Microsoft Learn — 任务计划程序](https://learn.microsoft.com/zh-cn/windows/win32/taskschd/task-scheduler-start-page)
- [Microsoft Learn — Get-ScheduledTask](https://learn.microsoft.com/zh-cn/powershell/module/scheduledtasks/get-scheduledtask)
- [Microsoft Learn — Powercfg 命令行选项](https://learn.microsoft.com/zh-cn/windows-hardware/design/device-experiences/powercfg-command-line-options)

---

来源页面: https://winbook.fyi/zh/windows/perf/scheduled-tasks/
