PowerShell创建计划任务:指定无需登录的运行账户
解决计划任务需登录才能运行的问题
要让计划任务无需用户登录即可运行,你需要指定NT AUTHORITY\SYSTEM账户作为运行主体,并配置对应的登录类型和任务设置。修改后的脚本如下:
# 创建任务动作 $action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-File "C:\script.ps1"' # 创建任务触发器 $trigger = New-ScheduledTaskTrigger -Daily -At 11am # 配置任务运行主体(使用SYSTEM账户,无需登录) $principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest # 配置任务设置:允许未登录时运行,适配电池供电场景(可选) $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable:$false # 注册计划任务(-Force用于覆盖已存在的同名任务) Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -Settings $settings -TaskPath "custom_tasks" -TaskName "customtask" -Force
关键配置说明:
New-ScheduledTaskPrincipal:指定UserId为NT AUTHORITY\SYSTEM,这是本地系统级账户,具备足够权限且无需交互式登录;LogonType设为ServiceAccount,对应服务账户的非交互式登录模式,完全满足后台运行需求。New-ScheduledTaskSettingsSet:-AllowStartIfOnBatteries和-DontStopIfGoingOnBatteries确保任务在设备使用电池时也能正常执行;-StartWhenAvailable会在任务错过触发时间后自动补跑,适合SCCM部署的客户端场景。-Force参数:避免因客户端已存在同名任务导致部署失败,直接覆盖现有配置。
配置完成后,计划任务将以SYSTEM账户在后台自动运行,不受当前用户是否登录的影响。
内容的提问来源于stack exchange,提问作者rumcajs
相关产品推荐
相关产品推荐

