You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于通过PowerShell脚本实现服务器定时自动重启的技术咨询

关于通过PowerShell脚本实现服务器定时自动重启的技术咨询

嘿,我来帮你搞定这个每隔周六晚上11点自动重启服务器的需求!既然SCHTasks不被客户接受,用PowerShell脚本创建计划任务是完美的替代方案,而且完全可以通过你的RMM工具推送部署。下面是具体的实现步骤和脚本示例:

核心思路

我们会用PowerShell的ScheduledTask模块(Windows 8/Server 2012及以上系统默认支持)来创建一个具备以下特性的计划任务:

  • 触发条件:每隔一周的周六23:00
  • 执行操作:重启服务器
  • 运行权限:必须以管理员权限执行(重启服务器需要高权限)

完整PowerShell脚本示例

# 1. 定义任务触发规则:每隔一周的周六晚上11点
$trigger = New-ScheduledTaskTrigger -Weekly `
    -DaysOfWeek Saturday `
    -WeeksInterval 2 `
    -At "23:00"

# 2. 定义任务执行的操作:重启服务器(这里用Restart-Computer,也可以用shutdown.exe /r /t 0)
$action = New-ScheduledTaskAction -Execute "powershell.exe" `
    -Argument "-Command ""Restart-Computer -Force"""

# 3. 设置任务的运行权限和配置:最高权限运行,不管用户是否登录
$settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable $false `
    -AllowStartIfOnBatteries $true `
    -DontStopIfGoingOnBatteries $true `
    -StartWhenAvailable $true

$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" `
    -LogonType ServiceAccount `
    -RunLevel Highest

# 4. 注册计划任务(任务名称可以自定义)
Register-ScheduledTask -TaskName "BiWeeklyServerReboot" `
    -Trigger $trigger `
    -Action $action `
    -Principal $principal `
    -Settings $settings `
    -Description "Automatically reboots the server every other Saturday at 11 PM"

关键细节说明

  • 触发规则-WeeksInterval 2 确保任务每隔一周执行,-DaysOfWeek Saturday 指定周六,-At "23:00" 是晚上11点。
  • 执行操作:用Restart-Computer -Force可以强制重启(即使有未保存的进程),如果需要温和一点可以去掉-Force,但服务器重启通常需要强制确保完成。
  • 权限设置:用SYSTEM账户运行任务,并且设置-RunLevel Highest,保证任务拥有足够权限执行重启操作,而且不受用户登录状态影响。
  • 任务配置-AllowStartIfOnBatteries 是针对可能的笔记本/移动服务器,如果你是固定机架服务器,可以设为$false

测试与部署注意事项

  • 测试脚本:在目标服务器上以管理员身份运行脚本,然后打开「任务计划程序」,找到名为BiWeeklyServerReboot的任务,检查触发条件和操作是否正确,也可以右键选择「运行」来测试重启功能(注意保存所有工作!)。
  • RMM推送:确保你的RMM工具推送脚本时是以管理员权限执行的,因为注册计划任务需要管理员权限。

替代方案(如果客户连计划任务都不想用?)

如果客户有特殊要求不想用计划任务,也可以写一个长驻的PowerShell脚本(用Start-Sleep循环检查时间),但这种方案不如计划任务可靠,因为脚本一旦意外终止就会失效,所以优先推荐计划任务的方式。

备注:内容来源于stack exchange,提问作者Ankur Srivastava

火山引擎 最新活动