本文目录导读:

我来帮您创建一个自动切换电源模式并优化的脚本,以下是一个适用于Windows系统的PowerShell脚本:
自动电源模式切换优化脚本
基础版本 - PowerShell脚本
# PowerModeOptimizer.ps1
# 自动切换电源模式并优化脚本
# 获取当前电源方案
$currentPlan = powercfg /GETACTIVESCHEME
# 定义电源方案GUID
$powerPlans = @{
"高性能" = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
"平衡" = "381b4222-f694-41f0-9685-ff5bb260df2f"
"节能" = "a1841308-3541-4fab-bc81-f71556f20b4a"
}
# 检测当前状态自动切换
function Auto-SwitchPowerMode {
param(
[string]$Mode = "auto"
)
switch ($Mode) {
"high" {
powercfg /SETACTIVE $powerPlans["高性能"]
Write-Host "已切换到高性能模式" -ForegroundColor Green
}
"balanced" {
powercfg /SETACTIVE $powerPlans["平衡"]
Write-Host "已切换到平衡模式" -ForegroundColor Yellow
}
"power-saver" {
powercfg /SETACTIVE $powerPlans["节能"]
Write-Host "已切换到节能模式" -ForegroundColor Cyan
}
"auto" {
# 智能检测逻辑
$batteryStatus = (Get-WmiObject Win32_Battery).BatteryStatus
$cpuUsage = (Get-Counter "\Processor(_Total)\% Processor Time").CounterSamples.CookedValue
if ($batteryStatus -eq 1) {
# 使用电池
if ($cpuUsage -gt 70) {
powercfg /SETACTIVE $powerPlans["平衡"]
Write-Host "电池模式,CPU高负载:切换到平衡模式" -ForegroundColor Yellow
} else {
powercfg /SETACTIVE $powerPlans["节能"]
Write-Host "电池模式,CPU低负载:切换到节能模式" -ForegroundColor Cyan
}
} else {
# 接通电源
if ($cpuUsage -gt 60) {
powercfg /SETACTIVE $powerPlans["高性能"]
Write-Host "电源模式,CPU高负载:切换到高性能模式" -ForegroundColor Green
} else {
powercfg /SETACTIVE $powerPlans["平衡"]
Write-Host "电源模式,CPU低负载:切换到平衡模式" -ForegroundColor Yellow
}
}
}
}
}
# 优化电源设置
function Optimize-PowerSettings {
Write-Host "正在优化电源设置..." -ForegroundColor Magenta
# 关闭快速启动
powercfg -H off
Write-Host "✓ 已关闭快速启动" -ForegroundColor Green
# 设置硬盘关闭时间
powercfg -CHANGE -disk-timeout-dc 30
powercfg -CHANGE -disk-timeout-ac 60
Write-Host "✓ 已优化硬盘关闭时间" -ForegroundColor Green
# 设置显示器关闭时间
powercfg -CHANGE -monitor-timeout-dc 10
powercfg -CHANGE -monitor-timeout-ac 20
Write-Host "✓ 已优化显示器关闭时间" -ForegroundColor Green
# 设置睡眠时间
powercfg -CHANGE -standby-timeout-dc 60
powercfg -CHANGE -standby-timeout-ac 120
Write-Host "✓ 已优化睡眠等待时间" -ForegroundColor Green
# 禁用USB选择性暂停
powercfg -SETACVALUEINDEX SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
powercfg -SETDCVALUEINDEX SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
Write-Host "✓ 已禁用USB选择性暂停" -ForegroundColor Green
return $true
}
# 主程序
function Main {
param(
[string]$Mode = "auto"
)
Clear-Host
Write-Host "===== 自动电源模式切换与优化工具 =====" -ForegroundColor White
Write-Host "版本 1.0`n" -ForegroundColor Gray
# 检测电源状态
$battery = Get-WmiObject Win32_Battery
if ($battery) {
$chargePercent = $battery.EstimatedChargeRemaining
Write-Host "[电源状态] 当前电量: $chargePercent%"
if ($battery.BatteryStatus -eq 1) {
Write-Host "[电源状态] 运行模式: 电池供电" -ForegroundColor Yellow
} else {
Write-Host "[电源状态] 运行模式: 接通电源" -ForegroundColor Green
}
} else {
Write-Host "[电源状态] 未检测到电池" -ForegroundColor Gray
}
# 获取CPU使用率
$cpuUsage = (Get-Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1).CounterSamples.CookedValue
Write-Host "[系统负载] CPU使用率: $([Math]::Round($cpuUsage, 1))%`n"
# 执行模式切换
Auto-SwitchPowerMode -Mode $Mode
# 执行优化
if (Optimize-PowerSettings) {
Write-Host "`n✓ 电源设置优化完成" -ForegroundColor Green
}
# 显示当前模式
Write-Host "`n当前活动电源方案:" -ForegroundColor White
powercfg /GETACTIVESCHEME | Select-String -Pattern "\(.*\)" | ForEach-Object {
$_.Matches[0].Value -replace '\(|\)'
}
}
# 运行主程序
Main -Mode $args[0]
高级版本 - 带GUI界面
# PowerModeGUI.ps1
# 图形界面版本
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = "电源模式优化工具"
$form.Size = New-Object System.Drawing.Size(400, 300)
$form.StartPosition = "CenterScreen"
# 创建标签
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10, 20)
$label.Size = New-Object System.Drawing.Size(380, 30)
$label.Text = "选择电源模式:"
$form.Controls.Add($label)
# 创建下拉菜单
$comboBox = New-Object System.Windows.Forms.ComboBox
$comboBox.Location = New-Object System.Drawing.Point(10, 50)
$comboBox.Size = New-Object System.Drawing.Size(260, 30)
$comboBox.Items.AddRange(@("自动切换", "高性能模式", "平衡模式", "节能模式"))
$comboBox.SelectedIndex = 0
$form.Controls.Add($comboBox)
# 创建按钮
$button = New-Object System.Windows.Forms.Button
$button.Location = New-Object System.Drawing.Point(280, 50)
$button.Size = New-Object System.Drawing.Size(100, 30)
$button.Text = "应用"
$form.Controls.Add($button)
# 创建状态文本框
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10, 100)
$textBox.Size = New-Object System.Drawing.Size(370, 150)
$textBox.Multiline = $true
$textBox.ScrollBars = "Vertical"
$form.Controls.Add($textBox)
# 按钮事件
$button.Add_Click({
$textBox.Clear()
$textBox.AppendText("正在应用设置...`r`n")
switch ($comboBox.SelectedIndex) {
0 {
# 自动切换
# 实现自动检测逻辑
$textBox.AppendText("已选择自动切换模式`r`n")
}
1 {
powercfg /SETACTIVE "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
$textBox.AppendText("已切换到高性能模式`r`n")
}
2 {
powercfg /SETACTIVE "381b4222-f694-41f0-9685-ff5bb260df2f"
$textBox.AppendText("已切换到平衡模式`r`n")
}
3 {
powercfg /SETACTIVE "a1841308-3541-4fab-bc81-f71556f20b4a"
$textBox.AppendText("已切换到节能模式`r`n")
}
}
# 显示当前状态
$currentPlan = powercfg /GETACTIVESCHEME
$textBox.AppendText("`r`n当前电源方案: $currentPlan")
$textBox.AppendText("`r`n优化完成!")
})
$form.ShowDialog()
计划任务脚本(自动化运行)
# 创建计划任务 - 每30分钟自动切换 $taskName = "AutoPowerModeOptimizer" # 创建任务 $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-WindowStyle Hidden -File `"C:\Scripts\PowerModeOptimizer.ps1`" -Mode auto" $trigger = New-ScheduledTaskTrigger -Daily -At "08:00" -RepetitionInterval (New-TimeSpan -Minutes 30) -RepetitionDuration ([TimeSpan]::MaxValue) $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Settings $settings -User "SYSTEM" Write-Host "计划任务已创建: $taskName" -ForegroundColor Green
使用说明
基本使用
-
手动运行脚本
# 以管理员身份运行 .\PowerModeOptimizer.ps1 auto # 或指定模式 .\PowerModeOptimizer.ps1 high
-
自动优化
- 脚本会自动检测电源状态(电池/电源)和CPU负载
- 根据当前状态智能切换最佳电源模式
-
计划任务
可以使用提供的计划任务脚本实现定时自动切换
✅ 关闭快速启动
✅ 优化硬盘关闭时间
✅ 优化显示器关闭时间
✅ 优化睡眠设置
✅ 禁用USB选择性暂停
✅ 智能CPU负载检测
注意事项
⚠️ 需要管理员权限运行
⚠️ 建议先测试不同场景下的表现
⚠️ 可根据需求调整GUID和优化参数
这个脚本可以根据您的具体需求进行定制和优化,如需特定功能可以进一步调整。