使用 New-ScheduledTaskTrigger -AtBoot 配合 SYSTEM 身份、-ExecutionPolicy Bypass、明确 WorkingDirectory 及电池兼容设置,可创建开机即运行的计划任务;需通过事件查看器验证执行日志。
在 powershell 中配置“系统开机时”触发的计划任务,核心是使用 new-scheduledtasktrigger -atstartup(启动时)或 -atboot(系统引导时),并搭配高权限、无电源依赖等关键设置,才能确保脚本在用户未登录、桌面未加载时稳定运行。
用 Register-ScheduledTask 创建开机触发任务
这是最直接、可复用的方式。以下命令创建一个开机后 2 分钟启动的 PowerShell 脚本任务:
-
定义触发器:开机后延迟执行,避免与系统服务争抢资源
$trigger = New-ScheduledTaskTrigger -AtBoot -Delay 00:02:00 -
定义操作:显式调用 PowerShell 并绕过执行策略
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File `"C:\Scripts\boot-init.ps1`"" -WorkingDirectory "C:\Scripts" -
定义安全上下文:以 SYSTEM 身份运行,无需用户登录
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest -
定义任务设置:允许电池模式运行、失败自动重试、不与其他实例冲突
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 2) -StopIfGoingOnBatteries -
注册任务(需管理员权限):
Register-ScheduledTask -TaskName "BootInitScript" -Trigger $trigger -Action $action -Principal $principal -Settings $settings -Description "开机后自动初始化系统环境"
关键细节说明
开机触发和登录触发有本质区别:“AtBoot”对应内核初始化完成、服务启动阶段;“AtStartup”则更偏向于用户会话启动初期(仍需登录)。生产环境推荐用 -AtBoot。
- 必须用 NT AUTHORITY\SYSTEM 身份,才能在无人值守时执行;普通用户账户即使勾选“不管是否登录”也无法在真正开机阶段运行
- WorkingDirectory 必须明确指定,否则脚本中相对路径会失效(默认工作目录是 System32)
- 若脚本需访问网络共享或映射驱动器,建议改用 UNC 路径或在脚本内手动
net use挂载 - 任务注册后不会立即生效,需重启系统或手动运行
Start-ScheduledTask -TaskName "BootInitScript"测试
验证与排错
任务是否真正在开机阶段运行,不能只看状态栏——要查日志:
- 打开“事件查看器 → 应用和服务日志 → Microsoft → Windows → TaskScheduler → Operational”,筛选事件 ID 100、101、200、201
- 若看到“任务已启动”但无后续“已执行”,大概率是脚本路径错误、权限不足或执行策略拦截(确认参数含
-ExecutionPolicy Bypass) - 在脚本开头加日志记录,例如:
"$(Get-Date): Script started" | Out-File C:\Logs\boot.log -Append - 检查 WLAN AutoConfig、DCOM Server Process Launcher 等基础服务是否设为自动启动——部分底层操作依赖它们
替代方案:用任务计划程序 GUI 补充设置
PowerShell 创建后,建议再进 taskschd.msc 打开该任务,做两处确认:
- 【常规】选项卡中,“配置为”请选择当前系统版本(如 Windows 10 或 Windows 11),否则某些设置可能被忽略
- 【条件】选项卡中,务必取消勾选“只有在计算机使用交流电源时才启动此任务”,否则笔记本合盖/拔电后任务将跳过


















