Windows-Ereignis-ID für Batteriestandsänderung

Windows-Ereignis-ID für Batteriestandsänderung

Ich muss eine Aufgabe in TS erstellen, die auf der Änderung des Batteriestands basiert. Nehmen wir an, mein Akku fällt von67 %Zu66 %. Wie kann ich eine Aufgabe basierend auf diesem Ereignis ausführen? Protokolliert Windows dies überhaupt? Ich konnte diese Informationen nirgends finden.

Antwort1

Ich muss im Taskplaner eine Aufgabe basierend auf der Änderung des Batteriestands erstellen

Windows protokolliert derartige Details nicht als Ereignisse. Sie können jedoch etwas wie die folgende Batchdatei verwenden und ein benutzerdefiniertes Ereignis erstellen.


Batterie.cmd

Diese Batchdatei überwacht den aktuellen Prozentsatz der Batterieladung und erstellt ein benutzerdefiniertes Ereignis, wenn die Ladung unter einen benutzerdefinierten Schwellenwert fällt.

@echo off
setlocal EnableDelayedExpansion
rem set threshold value
set _threshold=82
:start
rem get the battery charge
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1" %%i in (`wmic Path Win32_Battery Get EstimatedChargeRemaining ^| findstr /r /v "^$"`) do (
  set _charge=%%i
  echo !_charge!
  if !_charge! lss !_threshold! (
    echo threshold reached
    rem create a custom event in the application event log
    rem requires administrator privileges 
    eventcreate /l APPLICATION /t WARNING /ID 999 /D "Battery charge has dropped"
    goto :done
    ) else (
    rem wait for 10 minutes then try again
    timeout /t 600 /nobreak
    goto :start
    )
  )
:done
endlocal

Anmerkungen:

  • Der EventcreateBefehl funktioniert unter Windows XP bis einschließlich Windows 10. Er erfordert Administratorrechte.
  • _thresholdNach Bedarf einstellen
  • Wenn der Akkustand unter diesen Wert fällt, wird ein Ereignis mit der ID 999im Anwendungsereignisprotokoll mit der Beschreibung generiert.Battery charge has dropped
  • Passen Sie den eventcreateBefehl entsprechend Ihrer Situation an.
  • Passen Sie die timeoutVerzögerung entsprechend Ihrer Situation an.

Beispielausgabe:

Mein Akku ist derzeit zu 81 % geladen. Ich habe den Schwellenwert auf eingestellt 82. Folgendes passiert, wenn ich ausführe Battery.cmd:

> battery
81
threshold reached

SUCCESS: An event of type 'WARNING' was created in the 'APPLICATION' log with 'EventCreate' as the source.

Und hier ist der neue Eintrag im Ereignisprotokoll:

Bildbeschreibung hier eingeben


Eventcreate-Syntax

EVENTCREATE [/S system [/U username [/P [password]]]] /ID eventid
            [/L logname] [/SO srcname] /T type /D description

Description:
    This command line tool enables an administrator to create
    a custom event ID and message in a specified event log.

Parameter List:
    /S    system           Specifies the remote system to connect to.

    /U    [domain\]user    Specifies the user context under which
                           the command should execute.

    /P    [password]       Specifies the password for the given
                           user context. Prompts for input if omitted.

    /L    logname          Specifies the event log to create
                           an event in.

    /T    type             Specifies the type of event to create.
                           Valid types: SUCCESS, ERROR, WARNING, INFORMATION.

    /SO   source           Specifies the source to use for the
                           event (if not specified, source will default
                           to 'eventcreate'). A valid source can be any
                           string and should represent the application
                           or component that is generating the event.

    /ID   id               Specifies the event ID for the event. A
                           valid custom message ID is in the range
                           of 1 - 1000.

    /D    description      Specifies the description text for the new event.

    /?                     Displays this help message.


Examples:
    EVENTCREATE /T ERROR /ID 1000
        /L APPLICATION /D "My custom error event for the application log"

    EVENTCREATE /T ERROR /ID 999 /L APPLICATION
        /SO WinWord /D "Winword event 999 happened due to low diskspace"

    EVENTCREATE /S system /T ERROR /ID 100
        /L APPLICATION /D "Custom job failed to install"

    EVENTCREATE /S system /U user /P password /ID 1 /T ERROR
        /L APPLICATION /D "User access failed due to invalid user credentials"

Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • Veranstaltung erstellen– Erstellen Sie ein benutzerdefiniertes Ereignis in der Windows-Ereignisanzeige.
  • schtasks- Erstellen/Bearbeiten eines geplanten Jobs/einer geplanten Aufgabe. Der Job kann auf dem lokalen oder einem Remotecomputer erstellt werden.
  • wmic- Befehl der Windows-Verwaltungsinstrumentation.

Antwort2

Es gibt einen Microsoft-Windows-BatteryETW-Provider mit BatteryPercentRemainingEreignis-ID 13. Sie können ein Projekt codieren, dasAblaufverfolgungzur Erstellung einesEchtzeit-Listenerfür diesen Microsoft-Windows-BatteryAnbieter. Das Ereignis hat die Einträge, RemainingPercentageum den Status anzuzeigen und PercentageChangedie Änderung zu sehen:

Bildbeschreibung hier eingeben

-1Wenn Sie dieses Ereignis und die Änderung für sehen PercentageChange, führen Sie das gewünschte Programm aus.

Antwort3

OK, das von DavidPostill bereitgestellte Skript funktioniert nicht. Es ist ein nettes kleines Skript, aber der Code ist entweder fehlerhaft oder veraltet.

Hier ist das behobene Problem:

@echo off
setlocal EnableDelayedExpansion
rem set threshold value
set _threshold=30
:start
rem get the battery charge
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1" %%i in (`wmic Path Win32_Battery Get EstimatedChargeRemaining ^| findstr /r /v "^$"`) do (
  set _charge=%%i
  echo !_charge!
  if !_charge! lss !_threshold! (
    echo threshold reached
    rem create a custom event in the application event log
    rem requires administrator privileges
    eventcreate /l APPLICATION /t WARNING /ID 999 /D "Battery charge has dropped below the threshold."
    goto :done
  ) else (
    rem wait for 1 minute then try again
    timeout /t 60 /nobreak
    goto :start
  )
)
:done
endlocal

Ich habe diese Änderung in der Antwort von DavidPostill vorgeschlagen, weiß aber nicht, warum sie nicht genehmigt wurde …

Antwort4

Es gibt eine viel einfachere Möglichkeit, den Akkustand zu prüfen. Bewegen Sie im Navigationsbereich einfach die Maus über das Akkusymbol und Sie erhalten den Prozentsatz angezeigt.

verwandte Informationen