本文目录导读:

- 方法一:查看当前电源计划(PowerShell)
- 方法二:使用 PowerShell 获取详细信息(推荐)
- 方法三:自动切换电源计划(用于自动化脚本)
- 方法四:使用 VBScript(旧系统兼容)
- 关键命令汇总表
- ⚠️ 重要注意事项
- 完善的一个示例脚本(动态切换)
获取设备电源计划并修改,通常需要使用管理员权限的脚本,最常用的方式是 PowerShell(Windows 原生)或 CMD(命令行)。
以下是几种常见的脚本需求及其实现方法:
查看当前电源计划(PowerShell)
这个脚本会列出系统中所有存在的电源计划,并标记出当前正在使用的那个。
# 获取所有电源计划并显示 powercfg /list
如果你希望脚本输出更友好的结果,可以这样写:
# 获取当前活动的电源计划 GUID $currentPlan = powercfg /getactivescheme Write-Host "当前活动的电源计划信息:" Write-Host $currentPlan Write-Host "`n系统中所有电源计划:" # 获取所有计划 powercfg /list
输出示例:
当前活动的电源计划信息:
电源方案 GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (平衡)
系统中所有电源计划:
现有电源方案 (* 活动)
381b4222-f694-41f0-9685-ff5bb260df2e 高性能 (已停用)
8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c 平衡 *
a1841308-3541-4fab-bc81-f71556f20b4a 节能
使用 PowerShell 获取详细信息(推荐)
如果你要获取当前电源计划的详细设置(例如屏幕关闭时间、睡眠时间、硬盘关闭时间等),可以使用 Get-CimInstance 或直接解析 powercfg 的输出。
# 最简单的查看当前全部设置(以列表形式输出) powercfg /query # 或者只查看某个特定子项的设置(显示器超时) powercfg /query SCHEME_CURRENT SUB_VIDEO VIDEOIDLE
自动切换电源计划(用于自动化脚本)
当你通过 powercfg /list 获取到计划的 GUID 后,可以编写脚本自动切换。
# 1. 先获取所有计划 $plans = powercfg /list # 2. 假设我们要切换到“高性能”计划 # (你需要先确认你的系统上“高性能”的 GUID 是什么) $highPerformanceGUID = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c" # 示例,请替换为你自己的 # 3. 执行切换(需要管理员权限) powercfg /setactive $highPerformanceGUID Write-Host "已切换到高性能电源计划"
注意: 不同电脑、不同 Windows 版本的电源计划 GUID 可能不同,建议先运行 powercfg /list 获取确切的 GUID。
使用 VBScript(旧系统兼容)
在某些旧版系统(Windows 7 以下)或需要极简场景中,可以使用 VBS 脚本:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c", 0, True
关键命令汇总表
| 目的 | PowerShell / CMD 命令 |
|---|---|
| 查看所有计划 | powercfg /list |
| 查看当前活动计划 | powercfg /getactivescheme |
| 查看计划详细信息 | powercfg /query |
| 切换到某计划 | powercfg /setactive [GUID] |
| 创建/复制计划 | powercfg /duplicatescheme [GUID] |
| 删除计划 | powercfg /delete [GUID] |
⚠️ 重要注意事项
-
管理员权限:修改(切换、删除、创建)电源计划必须以管理员身份运行脚本。
- 在 PowerShell 中:脚本开头通常需要检测权限:
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Host "请以管理员身份运行此脚本!" Read-Host "按 Enter 退出" exit }
- 在 PowerShell 中:脚本开头通常需要检测权限:
-
GUID 问题:不同版本的 Windows(家庭版/专业版/服务器版)自带的电源计划 GUID 是固定的,但如果你安装了第三方驱动或厂商软件,GUID 可能会改变,建议脚本运行时先用
powercfg /list动态匹配名称。 -
权限冲突:在某些企业环境或笔记本品牌(如 Dell/Alienware 的散热配置)中,厂商软件可能会覆盖脚本的修改。
完善的一个示例脚本(动态切换)
如果你想写一个脚本,可以根据名称(如“平衡”、“高性能”)来切换,而不是手动输入 GUID,可以这样做:
<#
.SYNOPSIS
根据名称切换电源计划
.DESCRIPTION
输入计划名称(如"高性能"),自动查找并切换
#>
param(
[Parameter(Mandatory=$true)]
[string]$PlanName
)
# 检查管理员权限
$isAdmin = [Security.Principal.WindowsPrincipal]::new(
[Security.Principal.WindowsIdentity]::GetCurrent()
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "错误:请以管理员身份运行此脚本!" -ForegroundColor Red
exit 1
}
# 获取所有计划的输出
$output = powercfg /list
# 解析输出匹配名称
$pattern = "([a-f0-9\-]{36})\s+([^\s].*)"
$matches = [regex]::Matches($output, $pattern)
$targetGUID = $null
foreach ($match in $matches) {
$guid = $match.Groups[1].Value
$name = $match.Groups[2].Value.Trim()
if ($name -like "*$PlanName*") {
$targetGUID = $guid
Write-Host "找到计划: $name (GUID: $guid)"
break
}
}
if ($targetGUID) {
powercfg /setactive $targetGUID
Write-Host "成功切换到 '$PlanName' 电源计划" -ForegroundColor Green
} else {
Write-Host "未找到包含 '$PlanName' 的电源计划" -ForegroundColor Yellow
}
使用方法:
- 保存为
SwitchPlan.ps1 - 管理员运行 PowerShell
- 执行:
.\SwitchPlan.ps1 -PlanName "高性能"