Register-ScheduledTask 是 PowerShell 中用于注册已构建 ScheduledTask 对象的核心 cmdlet,需先用 New-ScheduledTask 组合 Action、Trigger、Principal 和 Settings,再通过 -InputObject 参数提交;必须以管理员权限运行,支持 -Force 覆盖同名任务,并需确保运行账户具备“登录为批处理作业”权限。
register-scheduledtask 是 powershell 中用于将任务注册到 windows 任务计划程序(task scheduler)的核心 cmdlet。它不创建任务,而是把已定义好的 scheduledtask 对象(通常由 new-scheduledtask 及其配套命令构建)写入系统任务库。
先构建任务对象,再注册
不能直接用字符串或参数“一键注册”,必须分两步:构造任务配置 → 注册任务。
- 用
New-ScheduledTaskAction定义要执行的操作(比如运行脚本、启动程序) - 用
New-ScheduledTaskTrigger定义触发条件(如开机时、每天、登录时、空闲时) - 用
New-ScheduledTaskPrincipal指定运行身份(默认为当前用户,可设为 SYSTEM 或指定账户) - 用
New-ScheduledTaskSettingsSet配置高级行为(如失败后重试、运行时不提示 UAC、网络可用才执行等) - 最后用
New-ScheduledTask把以上组件组合成一个任务对象 - 调用
Register-ScheduledTask -TaskName "MyTask" -InputObject $task完成注册
常见注册方式示例
以下命令注册一个“每天早上 8 点运行记事本”的任务:
$action = New-ScheduledTaskAction -Execute "notepad.exe" $trigger = New-ScheduledTaskTrigger -Daily -At "08:00" $principal = New-ScheduledTaskPrincipal -UserId "DOMAIN\user" -LogonType Interactive $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries $task = New-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -Settings $settings Register-ScheduledTask -TaskName "OpenNotepadDaily" -InputObject $task
注意:-UserId 必须是有效账户;若省略 -Principal,默认使用当前用户且需输入密码(交互式注册时会弹窗);非交互环境(如远程会话)建议提前用 ConvertTo-SecureString + New-ScheduledTaskPrincipal -Password 提供凭据。
覆盖已有任务与权限要点
如果同名任务已存在,默认会报错。添加 -Force 参数可强制覆盖:
Register-ScheduledTask -TaskName "MyTask" -InputObject $task -Force- 需要管理员权限(以管理员身份运行 PowerShell),否则注册失败
- 若目标账户无“登录为批处理作业”权限(
SeBatchLogonRight),任务可能无法按计划运行——可通过secpol.msc或whoami /priv检查 - 注册后可用
Get-ScheduledTask -TaskName "MyTask"验证,用Start-ScheduledTask手动触发测试
注册脚本任务的小技巧
运行 PowerShell 脚本需特别注意执行策略和路径:
- Action 应调用
powershell.exe并传参:New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File C:\Scripts\backup.ps1" - 确保脚本路径是绝对路径,且任务运行账户有读取权限
- 推荐在
New-ScheduledTaskSettingsSet中加-RunOnlyIfNetworkAvailable或-StartWhenAvailable提高健壮性


















