applescript 可通过 do shell script 调用 pmset 或 shutdown 实现睡眠、休眠、重启、关机等操作,但开关机不可控,且多数需管理员权限或用户授权;例如 sleepnow 无需密码,shutdown 则需 with administrator privileges 并弹出认证框。

AppleScript 可以控制 macOS 的电源管理行为,但需注意:系统限制较多,无法直接“开关机”,只能触发休眠、睡眠、关机、重启等系统级操作,且多数需要用户授权或管理员权限。
支持的电源管理操作及对应 AppleScript 命令
macOS 提供了有限但实用的电源控制能力,主要通过 do shell script 调用系统命令实现:
-
立即睡眠:
do shell script "pmset sleepnow"(无需密码,普通用户可执行) -
立即休眠(hibernate):
do shell script "pmset hibernatemode 25; pmset sleepnow"(需提前启用休眠模式) -
重启:
do shell script "sudo shutdown -r now" with administrator privileges(弹出密码框) -
关机:
do shell script "sudo shutdown -h now" with administrator privileges -
取消待定关机/重启:
do shell script "sudo shutdown -c"
安全与权限注意事项
涉及 shutdown 或 sudo 的操作必须显式声明 with administrator privileges,脚本运行时会弹出系统认证窗口。若想免密执行,需配置 /etc/sudoers(不推荐普通用户修改,存在安全风险)。另外,pmset 的部分参数(如修改唤醒定时器)也需管理员权限。
实用组合示例:下班自动关机脚本
以下脚本检查当前时间是否为 18:00 后,且无活跃用户活动(如鼠标/键盘输入),再执行关机:
Docker Desktop for Mac (Apple Silicon) 是 Docker 官方专为搭载 Apple M 系列芯片(M1, M2, M3, M4 及其 Pro/Max/Ultra 变体)的 Mac 电脑深度优化的容器化开发平台。它利用 Apple Silicon 强大的能效比和原生 ARM64 架构,为 macOS 开发者提供了流畅、高效且原生的容器体验,彻底取代了旧版 Intel Mac 上的虚拟化方案。
set now to (current date)
set hour to the hour of now
if hour ≥ 18 then
-- 检查最近 300 秒是否有用户活动(依赖 ioreg)
set idleSecs to do shell script "ioreg -c IOHIDSystem | awk '/IdleTime/ {print $NF/1000000000; exit}'"
if (idleSecs as number) > 300 then
do shell script "sudo shutdown -h now" with administrator privileges
end if
end if
注意:该判断逻辑较简略,生产环境建议结合 caffeinate -i 状态或更精确的活动检测。
替代方案与局限提醒
AppleScript 无法:
- 强制唤醒已关机设备(需硬件支持如 Wake-on-LAN,且 Apple 不开放相关接口)
- 精细调节 CPU 频率或电池充电阈值(这些属于内核级策略,需第三方工具如
AlDente或smcFanControl) - 绕过登录界面执行电源操作(系统设计上禁止未登录状态下远程关机)
如需更灵活调度,建议搭配 launchd 定时任务或使用快捷指令(Shortcuts)+ 自动化触发器作为轻量替代。










