怎样用脚本批量修改电源计划?

wen 实用脚本 2

本文目录导读:

怎样用脚本批量修改电源计划?

  1. 方法一:使用 powercfg 命令 + 批处理脚本(最常用,适合本地/少量机器)
  2. 方法二:使用 PowerShell 脚本(适合域环境或远程管理)
  3. 方法三:使用 VBScript(老系统兼容)
  4. 重要注意事项

使用 powercfg 命令 + 批处理脚本(最常用,适合本地/少量机器)

powercfg 是Windows自带的命令行工具,可以查询、创建、修改和删除电源方案。

查询现有电源计划

需要知道电源计划的 GUID(全局唯一标识符)。

powercfg /list

输出类似于:

现有电源使用方案 (* 活动)
---------------------------
8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  高性能
381b4222-f694-41f0-9685-ff5bb260df2e  平衡
a1841308-3541-4fab-bc81-f71556f20b4a  节能

创建一个批处理脚本(set_powerplan.bat

@echo off批量设置电源计划为高性能模式
REM 将此GUID替换为你想要设置的电源计划
set "HighPerformanceGUID=8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
echo 正在切换到高性能电源计划...
powercfg /setactive %HighPerformanceGUID%
IF %ERRORLEVEL% EQU 0 (
    echo 成功:电源计划已切换。
) ELSE (
    echo 失败:请以管理员身份运行此脚本。
)
pause

保存并运行

  • 保存为 .bat 文件。
  • 右键点击 -> 以管理员身份运行

批量修改特定设置(比如关闭显示器时间、硬盘休眠时间):

REM 设置“接通电源”下关闭显示器为30分钟
powercfg /change standby-timeout-ac 30
REM 设置“使用电池”下关闭显示器为15分钟
powercfg /change standby-timeout-dc 15
REM 禁用硬盘休眠(接通电源和电池)
powercfg /change hibernate-timeout-ac 0
powercfg /change hibernate-timeout-dc 0
REM 将“平衡”计划的处理器最小状态设置为5%
powercfg /setacvalueindex 381b4222-f694-41f0-9685-ff5bb260df2e sub_processor 5%

使用 PowerShell 脚本(适合域环境或远程管理)

PowerShell 可以结合 powercfg,并且通过 Invoke-Command 远程执行。

脚本示例 Set-PowerPlan.ps1

# 定义目标电源计划的GUID
$planGUID = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"  # 高性能
# 获取当前系统上的电源计划列表
$plans = powercfg /list | Select-String -Pattern "(\{.*?\})"
# 检查目标计划是否存在
$exists = $plans | Where-Object { $_ -match [regex]::Escape($planGUID) }
if ($exists) {
    Write-Host "找到目标电源计划,正在应用..."
    powercfg /setactive $planGUID
    Write-Host "电源计划已切换。"
} else {
    Write-Host "错误:未找到指定的电源计划GUID,请使用 powercfg /list 查看可用计划。"
}

远程执行(需开启WinRM)

$computers = Get-Content -Path "C:\list_of_pcs.txt"  # 每行一个计算机名或IP
foreach ($pc in $computers) {
    Invoke-Command -ComputerName $pc -ScriptBlock {
        powercfg /setactive "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
    } -Credential (Get-Credential)
}

使用 VBScript(老系统兼容)

如果你需要兼容 Windows XP/2003 等老系统:

' set_powerplan.vbs
Set objShell = CreateObject("WScript.Shell")
' 设置为高性能(GUID可能需要根据系统调整)
objShell.Run "powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c", 0, True
WScript.Echo "电源计划已切换。"

重要注意事项

  1. 管理员权限
    修改电源计划需要管理员权限,批处理或PowerShell脚本必须“以管理员身份运行”。

  2. GUID获取
    不同Windows版本、不同语言系统的电源计划GUID不完全相同。

    • 高性能:通常是 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c(英文系统常见)
    • 平衡:通常是 381b4222-f694-41f0-9685-ff5bb260df2e
    • 节能:通常是 a1841308-3541-4fab-bc81-f71556f20b4a
      务必先用 powercfg /list 确认实际GUID。
  3. 批量修改特定子设置
    如果你需要修改“处理器最大状态”或“无线适配器节能”等具体参数,语法如下:

    powercfg /setacvalueindex <PlanGUID> <SubGroupGUID> <SettingGUID> <Value>

    常用的子组和设置GUID可以查阅微软官方文档,但简单的做法是先手动设置好一个计划,然后导出:

    powercfg /export myplan.pow <PlanGUID>

    然后在其他机器上导入:

    powercfg /import myplan.pow
    powercfg /setactive <NewGUID>
  4. 远程执行权限
    使用PowerShell远程管理时,需确保域控制器或计算机的WinRM服务已启动,且防火墙允许5985/5986端口。


场景 推荐方法
单台机器,快速切换 批处理脚本 + powercfg
局域网多台机器,有域环境 PowerShell + Invoke-Command
多台机器,无域环境 批处理脚本配合 psexec(Sysinternals工具)

如果你能提供更详细的使用场景(比如是个人电脑定期调整,还是公司批量部署),我可以给出更具体的脚本模板。

抱歉,评论功能暂时关闭!