本文目录导读:

要用脚本控制电源选项(如关机、重启、休眠、睡眠、更改电源计划等),可以根据你的操作系统选择合适的脚本语言,以下是主要方法:
Windows 系统
PowerShell 脚本(最推荐)
基本电源操作:
# 关机 Stop-Computer # 重启 Restart-Computer # 休眠 shutdown /h # 睡眠(需要管理员权限) Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.Application]::SetSuspendState([System.Windows.Forms.PowerState]::Suspend, $false, $false) # 锁定 rundll32.exe user32.dll,LockWorkStation
电源计划管理:
# 查看所有电源计划 powercfg /list # 设置电源计划(使用GUID) powercfg /setactive GUID # 创建自定义电源计划 powercfg /duplicatescheme GUID
定时任务:
# 定时关机(3600秒后) shutdown /s /t 3600 # 取消定时关机 shutdown /a
Batch 批处理脚本
@echo off :: 关机 shutdown /s /t 0 :: 重启 shutdown /r /t 0 :: 休眠 shutdown /h :: 锁定 rundll32.exe user32.dll,LockWorkStation :: 注销 shutdown /l
VBScript
' 创建 WMI 对象
Set objShell = CreateObject("WScript.Shell")
' 关机
objShell.Run "shutdown /s /t 0"
' 重启
objShell.Run "shutdown /r /t 0"
' 休眠
objShell.Run "shutdown /h"
' 睡眠
objShell.Run "rundll32.exe powrprof.dll,SetSuspendState 0,1,0"
Linux 系统
Bash 脚本
#!/bin/bash # 关机 sudo shutdown -h now # 或 sudo poweroff # 重启 sudo shutdown -r now # 或 sudo reboot # 休眠 sudo systemctl hibernate # 睡眠 sudo systemctl suspend # 混合睡眠 sudo systemctl hybrid-sleep
定时任务
#!/bin/bash # 30分钟后关机 sudo shutdown -h +30 # 取消定时关机 sudo shutdown -c
macOS 系统
Bash 脚本
#!/bin/bash # 关机 sudo shutdown -h now # 重启 sudo shutdown -r now # 睡眠 sudo pmset sleepnow # 锁定 /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
定时任务
# 设置定时关机(每天23点关机) sudo pmset repeat shutdown MTWRFSU 23:00:00 # 取消所有定时 sudo pmset repeat cancel
跨平台解决方案
Python 脚本(跨平台)
import os
import platform
import subprocess
def power_action(action):
system = platform.system()
if system == "Windows":
actions = {
"shutdown": "shutdown /s /t 0",
"restart": "shutdown /r /t 0",
"hibernate": "shutdown /h",
"sleep": "rundll32.exe powrprof.dll,SetSuspendState 0,1,0",
"lock": "rundll32.exe user32.dll,LockWorkStation"
}
elif system == "Linux":
actions = {
"shutdown": "sudo shutdown -h now",
"restart": "sudo shutdown -r now",
"hibernate": "sudo systemctl hibernate",
"sleep": "sudo systemctl suspend"
}
elif system == "Darwin": # macOS
actions = {
"shutdown": "sudo shutdown -h now",
"restart": "sudo shutdown -r now",
"sleep": "sudo pmset sleepnow"
}
else:
print(f"不支持的系统: {system}")
return
if action in actions:
os.system(actions[action])
else:
print(f"不支持的操作: {action}")
# 使用示例
power_action("shutdown")
power_action("restart")
高级用法
带确认的脚本
#!/bin/bash
# 带确认的关机脚本
echo "系统将在10秒后关机..."
echo "按 Ctrl+C 取消"
for i in $(seq 10 -1 1); do
echo "剩余 $i 秒..."
sleep 1
done
sudo shutdown -h now
条件判断脚本
#!/bin/bash
# 在特定时间后关机
current_hour=$(date +%H)
if [ "$current_hour" -ge 23 ]; then
echo "时间已晚,即将关机..."
sudo shutdown -h now
else
echo "还不到关机时间"
fi
注意事项
- 管理员权限:大多数电源操作需要管理员/root权限
- 保存工作:关机前确保保存所有工作
- 系统差异:不同Linux发行版命令可能略有差异
- 安全考虑:不要在生产环境中随意使用
- 日志记录:建议记录操作日志便于排查问题
选择哪种方式取决于你的具体需求、操作系统和个人偏好,PowerShell 和 Bash 是最常见的选择。