怎么用脚本获取设备电源计划

wen 实用脚本 1

本文目录导读:

怎么用脚本获取设备电源计划

  1. 方法一:查看当前电源计划(PowerShell)
  2. 方法二:使用 PowerShell 获取详细信息(推荐)
  3. 方法三:自动切换电源计划(用于自动化脚本)
  4. 方法四:使用 VBScript(旧系统兼容)
  5. 关键命令汇总表
  6. ⚠️ 重要注意事项
  7. 完善的一个示例脚本(动态切换)

获取设备电源计划并修改,通常需要使用管理员权限的脚本,最常用的方式是 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]

⚠️ 重要注意事项

  1. 管理员权限:修改(切换、删除、创建)电源计划必须以管理员身份运行脚本。

    • 在 PowerShell 中:脚本开头通常需要检测权限:
      if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
          Write-Host "请以管理员身份运行此脚本!"
          Read-Host "按 Enter 退出"
          exit
      }
  2. GUID 问题:不同版本的 Windows(家庭版/专业版/服务器版)自带的电源计划 GUID 是固定的,但如果你安装了第三方驱动或厂商软件,GUID 可能会改变,建议脚本运行时先用 powercfg /list 动态匹配名称。

  3. 权限冲突:在某些企业环境或笔记本品牌(如 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
}

使用方法:

  1. 保存为 SwitchPlan.ps1
  2. 管理员运行 PowerShell
  3. 执行:.\SwitchPlan.ps1 -PlanName "高性能"

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