关于通过脚本实现用户自动登录及域环境下GPO启动脚本创建定时重启任务的技术问询
域环境下通过GPO启动脚本创建每日定时重启任务的实现方案
嘿,我来分享下我最近在域环境里落地的每日定时重启方案——通过GPO推送计算机启动脚本,让域内机器一开机就自动创建一个每天23:00执行的重启计划任务。这个方案的核心是用PowerShell脚本创建系统级定时任务,不管用户是否登录都能正常触发重启。
下面是完整的PowerShell脚本代码:
# 定义重启的触发时间(24小时制HH:MM格式) $triggerTime = "23:00" # 创建每日触发的任务触发器 $trigger = New-ScheduledTaskTrigger -Daily -At $triggerTime # 定义任务动作:调用shutdown.exe执行重启命令 $action = New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "/r" # 设置任务执行主体:使用SYSTEM账户,支持无登录状态执行,且以最高权限运行 $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType S4U -RunLevel Highest # 注册计划任务,设置任务名称和描述 Register-ScheduledTask -TaskName "DailySystemRestart" -Trigger $trigger -Action $action -Principal $principal -Description "每日23:00自动重启,由GPO启动脚本创建"
脚本各部分说明:
- 触发时间定义:用
$triggerTime变量指定重启时间,这里设为23:00,你可以根据需求改成任意时间点。 - 任务触发器:通过
New-ScheduledTaskTrigger创建每日触发规则,确保每天到点就执行任务。 - 任务动作:调用系统自带的
shutdown.exe并传入/r参数,这个参数的作用就是触发计算机重启。 - 执行主体配置:指定用
SYSTEM账户运行任务,S4U登录类型意味着即使没有用户登录,任务也能正常执行;RunLevel Highest确保任务拥有最高系统权限,避免因权限不足导致重启失败。 - 注册任务:最后用
Register-ScheduledTask把前面配置的触发器、动作和主体整合起来,创建一个名为DailySystemRestart的计划任务。
额外注意事项:
- 要确保GPO的计算机配置中正确添加了这个启动脚本,并且脚本的权限设置允许系统账户读取和执行。
- 测试阶段可以把
$triggerTime改成当前时间后几分钟,重启机器后检查任务是否成功创建并执行。 - 可以用命令
Get-ScheduledTask -TaskName "DailySystemRestart"验证任务是否存在,或者直接打开任务计划程序确认配置细节。
备注:内容来源于stack exchange,提问作者Joaquim Castanyer Vilalta




