Powershell - 移除交流电源时值不会改变

Powershell - 移除交流电源时值不会改变

我正在尝试编写一个脚本,根据电池是否插入来更改 Windows 电源计划。我尝试了一个无限循环,它不断检查电池状态,如果处于电池模式,变量“$batteryStatus”将返回 1,如果处于交流电源模式,则返回 2。

我遇到的问题是什么都没有发生,它保持相同的状态。我读到也许我可以通过使用 eventvwr.msc 来解决这个问题,但我真的不知道如何让这个脚本适应事件。这是我目前在 Powershell 上的代码:

$equilibradoGUID = '381b4222-f694-41f0-9685-ff5bb260df2e'
$bateriaGUID = '0ed875ed-d70e-4dd1-bc8e-95a18268730f'
$batteryStatus = (Get-WmiObject Win32_Battery).BatteryStatus

while ($True) {
    if ($batteryStatus2 -eq 2){
        Write-Output "AC"
        powercfg -setactive $equilibradoGUID
    }
    else {
        Write-Output "Battery"
        powercfg -setactive $bateriaGUID
    }
} 

答案1

Windows 10 64 位。

您的方法需要重新启动才能生效,但如果您想坚持下去,这可能会有所帮助 -https://stackoverflow.com/questions/7355331

如何使用 cmd 脚本更改 Windows 10 电源设置,无需重新启动或管理权限即可生效:

rem Change Win10 power settings w/o restart or admin privileges
@echo off
setlocal 
:minpower
POWERCFG /CHANGE /MONITOR-TIMEOUT-DC 1
POWERCFG /CHANGE /DISK-TIMEOUT-DC 2
POWERCFG /CHANGE /STANDBY-TIMEOUT-DC 3
POWERCFG /CHANGE /MONITOR-TIMEOUT-AC 1
POWERCFG /CHANGE /DISK-TIMEOUT-AC 2
POWERCFG /CHANGE /STANDBY-TIMEOUT-AC 3
exit /b

:normalpower 
POWERCFG /CHANGE /MONITOR-TIMEOUT-DC 10
POWERCFG /CHANGE /DISK-TIMEOUT-DC 29
POWERCFG /CHANGE /STANDBY-TIMEOUT-DC 30
POWERCFG /CHANGE /MONITOR-TIMEOUT-AC 10
POWERCFG /CHANGE /DISK-TIMEOUT-AC 29
POWERCFG /CHANGE /STANDBY-TIMEOUT-AC 30
exit /b

:maxpower 
POWERCFG /CHANGE /MONITOR-TIMEOUT-DC 1
POWERCFG /CHANGE /DISK-TIMEOUT-DC 601
POWERCFG /CHANGE /STANDBY-TIMEOUT-DC 602
POWERCFG /CHANGE /MONITOR-TIMEOUT-AC 1
POWERCFG /CHANGE /DISK-TIMEOUT-AC 601
POWERCFG /CHANGE /STANDBY-TIMEOUT-AC 602
exit /b

相关内容