You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell获取Windows系统显示的电池完全充电剩余时间

如何通过PowerShell获取Windows系统显示的电池完全充电剩余时间

我完全懂你的处境——能顺利拿到Windows显示的电池放电剩余时间,但翻遍了PowerStatus、Win32_Battery这类常用的WMI类,都找不到直接给出系统显示的完全充电剩余时间的属性,而且你还不想自己计算,就想要和任务栏电池图标里一模一样的数值对吧?

先帮你梳理下你已经尝试过的那些类为什么没给你想要的结果:

  • PowerStatus.BatteryFullLifetime 确实大多时候返回-1,这个属性设计上不是用来返回实时充电剩余时间的,更多是标识电池的设计寿命相关值,对你来说没什么用。
  • 你列出的BatteryStatus、Win32_Battery这些WMI类,虽然包含了充电速率、剩余容量、满电容量这些关键参数,但确实没有直接给出计算好的充电剩余时间。

那有没有办法直接拿到系统已经计算好的、和任务栏显示一致的数值呢?这里有两个可行的方案:

方案1:通过性能计数器读取(最接近系统显示值)

Windows的性能计数器里其实藏着这个数据,你可以用Get-Counter命令直接读取:

$chargeCounter = Get-Counter -Counter "\Battery Status\Charge Time Remaining" -ErrorAction SilentlyContinue
if ($chargeCounter) {
    $secondsRemaining = $chargeCounter.CounterSamples.CookedValue
    if ($secondsRemaining -ne 0) {
        $minutesRemaining = [math]::Round($secondsRemaining / 60, 1)
        Write-Host "系统显示的完全充电剩余时间:$minutesRemaining 分钟"
    } else {
        Write-Host "电池已充满或未在充电"
    }
} else {
    Write-Host "无法读取充电剩余时间计数器,请确保系统支持该指标"
}

这个计数器返回的是秒数,转成分钟后和任务栏显示的数值基本一致,因为这就是系统用来显示的数据源之一。

方案2:用WMI参数计算(和系统逻辑一致)

如果你不想依赖性能计数器,也可以用你已经拿到的BatteryStatus和BatteryFullChargedCapacity数据来计算,这个逻辑和Windows系统计算的逻辑完全一致,结果也会完全匹配:

# 获取当前电池状态和满电容量
$batteryStatus = Get-CimInstance -ClassName BatteryStatus | Where-Object { $_.Active -eq $true }
$fullCapacity = Get-CimInstance -ClassName BatteryFullChargedCapacity | Where-Object { $_.Active -eq $true }

if ($batteryStatus.Charging -eq $true) {
    $remainingCharge = $fullCapacity.FullChargedCapacity - $batteryStatus.RemainingCapacity
    $chargeRate = $batteryStatus.ChargeRate
    if ($chargeRate -gt 0) {
        # 计算剩余时间(秒转分钟,保留1位小数)
        $minutesRemaining = [math]::Round(($remainingCharge / $chargeRate) * 60, 1)
        Write-Host "计算得到的完全充电剩余时间:$minutesRemaining 分钟"
    } else {
        Write-Host "充电速率为0,无法计算剩余时间"
    }
} else {
    Write-Host "电池未在充电"
}

用你提供的测试数据来算的话:剩余需要充的容量是1796-1573=223,充电速率是717,计算下来就是(223/717)*60≈18.7分钟,这应该就是Windows显示的数值。

需要注意的是,这两个方案都需要在电池处于充电状态时才能拿到有效数值,如果电池已经充满或者未连接电源,都会返回对应的提示。

备注:内容来源于stack exchange,提问作者Boris Tashev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:33:17