PowerShell创建计划任务报Register-ScheduledTask 0x80070005错误
PowerShell创建S4U类型计划任务报访问拒绝的解决方案
错误根因
使用-LogonType S4U参数创建计划任务时,GUI会自动申请相关系统特权完成创建,而PowerShell不会主动触发特权启用,同时参数配置缺失也会导致权限校验失败。
修复步骤
1. 修正任务主体配置
创建ScheduledTaskPrincipal时必须补全账号所属的机器/域名前缀,避免SID解析错误,同时明确指定任务运行级别:
# 本地服务账号写法 $TaskPrincipal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\<SERVICE_USER>" -LogonType S4U -RunLevel Limited # 若任务需要管理员权限执行,将-RunLevel值改为Highest # 域服务账号写法:$TaskPrincipal = New-ScheduledTaskPrincipal -UserId "域名\<SERVICE_USER>" -LogonType S4U -RunLevel Limited
2. 配置必要的用户权限
打开本地安全策略编辑器(运行secpol.msc),进入「本地策略 > 用户权限分配」,确认以下两个权限已分配给你当前执行PowerShell的管理员账号:
- 替换进程级令牌 (SeAssignPrimaryTokenPrivilege)
- 调整进程的内存配额 (SeIncreaseQuotaPrivilege)
默认本地管理员组已拥有这两个权限,若你的环境组策略有自定义调整,手动添加后重启机器生效。
3. 排查冲突策略
确认以下拒绝类策略中没有包含你使用的服务账号:
- 拒绝作为批处理作业登录
- 拒绝本地登录
4. 调整注册命令参数
注册任务时添加-Force参数,避免同名任务残留配置导致的权限冲突:
Register-ScheduledTask -Action $TaskAction -Description "<DESC>" -Settings $TaskSettingsSet -Principal $TaskPrincipal -TaskName "<TASK_NAME>" -TaskPath "\\" -Trigger $TaskTrigger -Force
验证操作
配置完成后,关闭当前PowerShell终端,重新以「管理员身份运行」PowerShell,执行创建命令即可正常完成任务注册。
内容的提问来源于stack exchange,提问作者Evgeniy
相关产品推荐
相关产品推荐

