Aktionen

Windows Batterie Akku Status per WMI abfragen

Aus znilwiki

Changelog:

  • 06.03.2018 Erste Version



1 Vorwort

In einem Projekt benötigte ich ein Skript was den Batterie-Status einer USV abfragt. Die USV ist per USV mit dem Server verbunden und meldet sich am Windows als Batterie, inklusive des Symbols unten in der Taskleiste:

ClipCapIt-180306-141915.PNGClipCapIt-180306-141835.PNG

In dem Skript wollte ich abfragen

  • Ob Akku oder Netzbetrieb
  • Bei bestimmten Prozentzahlen (=Ladestand) andere Skripte starten


Nachfolgend findet Ihr zunächst eine Datensammlung wie man Werte abfragt und die Bedeutung der Rückgabewerte.
Im Anschluss gibt es ein Beispielskript.
Bei der Übersetzung der Werte habe ich durchaus eigene Interpretationen gewählt, die Original-Beschreibungen findet Ihr unter

https://msdn.microsoft.com/en-us/library/aa394074(v=vs.85).aspx



2 Abfragen


2.1 DeviceID

wmic path win32_battery get DeviceID

Rückgabewert:
Die Bezeichnung der Batterie bzw. des Gerätes, Beispiele:

Notebook ASUS   : DeviceID
APC-USV mit 700W: 5B1220T09591  APCBack-UPS ES 700G FW:871.O2 .I USB FW:O2



2.2 EstimatedChargeRemaining

wmic path win32_battery get EstimatedChargeRemaining

Rückgabewert:
Der Ladezustand der Batterie in % Prozent
Der Wert kann auch höher als 100 sein!


2.3 EstimatedRunTime

wmic path win32_battery get EstimatedRunTime

Rückgabewert:
Die geschätze Laufzeit in Minuten auf Grund der aktuellen Stromlast.
Liefert im Netzbetrieb ggf. zu hohe Werte, im Batteriemodus sollte der Wert stimmen, Beispiele:

Notebook ASUS (Netzbetrieb) : 71582788 (=136 Jahre)
Notebook ASUS (Akkubetrieb) : 164 (=2h 44 Minuten)
APC-USV mit 700W ...........: 23

Die APC liefert also immer einen echten Wert.


2.4 BatteryStatus

wmic path win32_battery get BatteryStatus

Rückgabewerte:

 1 : Batterie wird entladen
 2 : Stromversorgung angeschlossen, Batterie muss nicht geladen werden
 3 : Batterie voll geladen
 4 : Ladezustand niedrig
 5 : Ladezustand kritisch
 6 : Batterie wird geladen
 7 : Batterie wird geladen, Ladezustand ist hoch
 8 : Batterie wird geladen, Ladezustand ist niedrig
 9 : Batterie wird geladen, Ladezustand ist kritisch
10 : Nicht definiert
11 : Ladezustand ist "teilweise geladen"



3 Skript

Hier mein Script

CheckBattery.cmd

Welches verschiedene Befehle in verschiedenen Zuständen ausführen kann.

@ECHO off
REM Skript das den Batterie-Ladezustand ausliest und ggf. reagiert
REM 2018 von Bernhard Linz / Bernhard.Linz@datagroup.defined

REM ###################
REM # Daten ermitteln #
REM ###################

REM Ladezustand der Batterie abfragen
REM findstr sucht dabei nach Zahlen und ignoriert so die erste Zeile der Rueckgabe
FOR /f "tokens=*" %%a IN ('wmic path win32_battery get EstimatedChargeRemaining ^| findstr /r "[0-9][0-9]*"') do set BATTERYCHARGINGSSTATUS=%%a
REM Die Variable enthält noch Leerzeichen - entfernen:
SET BATTERYCHARGINGSSTATUS=%BATTERYCHARGINGSSTATUS: =%
ECHO Ladezustand ist ...: %BATTERYCHARGINGSSTATUS%%%

REM BatterieStatus abfragen
REM findstr sucht dabei nach Zahlen und ignoriert so die erste Zeile der Rueckgabe
FOR /f "tokens=*" %%a IN ('wmic path win32_battery get BatteryStatus ^| findstr /r "[0-9][0-9]*"') do set BATTERYSTATUS=%%a
REM Die Variable enthält noch Leerzeichen - entfernen:
SET BATTERYSTATUS=%BATTERYSTATUS: =%
IF "%BATTERYSTATUS%"=="1" SET STATUSTEXT=Batterie wird entladen
IF "%BATTERYSTATUS%"=="2" SET STATUSTEXT=Stromversorgung angeschlossen, Batterie muss nicht geladen werden
IF "%BATTERYSTATUS%"=="3" SET STATUSTEXT=Batterie voll geladen
IF "%BATTERYSTATUS%"=="4" SET STATUSTEXT=Ladezustand niedrig
IF "%BATTERYSTATUS%"=="5" SET STATUSTEXT=Ladezustand kritisch
IF "%BATTERYSTATUS%"=="6" SET STATUSTEXT=Batterie wird geladen
IF "%BATTERYSTATUS%"=="7" SET STATUSTEXT=Batterie wird geladen, Ladezustand ist hoch
IF "%BATTERYSTATUS%"=="8" SET STATUSTEXT=Batterie wird geladen, Ladezustand ist niedrig
IF "%BATTERYSTATUS%"=="9" SET STATUSTEXT=Batterie wird geladen, Ladezustand ist kritisch
IF "%BATTERYSTATUS%"=="10" SET STATUSTEXT=Nicht definiert
IF "%BATTERYSTATUS%"=="11" SET STATUSTEXT=Ladezustand ist "teilweise geladen"
ECHO Batterie Status ist: %BATTERYSTATUS% (%STATUSTEXT%)

REM ##############
REM # Auswertung #
REM ##############
REM 2,3 = Batterie (fast) voll + Stromversorgung vorhanden
IF "%BATTERYSTATUS%"=="2" GOTO ACPOWERED
IF "%BATTERYSTATUS%"=="3" GOTO ACPOWERED
REM 6,7,8,9 = Batterie wird geladen + Stromversorgung vorhanden
IF "%BATTERYSTATUS%"=="6" GOTO CHARGING
IF "%BATTERYSTATUS%"=="7" GOTO CHARGING
IF "%BATTERYSTATUS%"=="8" GOTO CHARGING
IF "%BATTERYSTATUS%"=="9" GOTO CHARGING
REM 1,4,5 = Batterie wird entladen + KEINE Stromversorgung
IF "%BATTERYSTATUS%"=="1" GOTO BATTERYMODE
IF "%BATTERYSTATUS%"=="4" GOTO BATTERYMODE
IF "%BATTERYSTATUS%"=="5" GOTO BATTERYMODE
REM Wenn es bis hier keinen Treffer gab direkt zum Ende springen
GOTO ENDE


REM ---------------------------------------------------------------------------------------------
:ACPOWERED
REM ####################################################
REM # Batterie (fast) voll + Stromversorgung vorhanden #
REM ####################################################
REM Befehle hier
ECHO Normalbetrieb - nichts zu tun
GOTO ENDE
REM ---------------------------------------------------------------------------------------------
:CHARGING
REM #####################################################
REM # Batterie wird geladen + Stromversorgung vorhanden #
REM #####################################################
REM Befehle hier
REM unter 51%
IF %BATTERYCHARGINGSSTATUS% LSS 51 (
    ECHO Batterie unter 50%, wird geladen
    REM Befehle hier
) ELSE (
    ECHO Batterie über 50%, wird geladen
    REM Befehle hier
)
GOTO ENDE
REM ---------------------------------------------------------------------------------------------
:BATTERYMODE
REM ##################################################
REM # Batterie wird entladen + KEINE Stromversorgung #
REM ##################################################
REM Befehle hier
IF %BATTERYCHARGINGSSTATUS% LSS 51 (
    ECHO Batterie unter 50%
    REM Befehle hier
) ELSE IF %BATTERYCHARGINGSSTATUS% LSS 75 (
    ECHO Batterie unter 75%
    REM Befehle hier
) ELSE (
    ECHO Batterie zwischen 75 bis 100%
    REM Befehle hier
)
GOTO ENDE
REM ---------------------------------------------------------------------------------------------
:ENDE
REM Skript beenden



4 Kommentare


Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.