ID de evento do Windows para alteração do nível da bateria

ID de evento do Windows para alteração do nível da bateria

Preciso criar uma tarefa no TS com base na alteração do nível da bateria. Digamos que minha bateria caia de67%para66%. Como posso executar uma tarefa com base neste evento. O Windows registra isso? Não consegui encontrar essa informação em lugar nenhum.

Responder1

Preciso criar uma tarefa no Agendador de Tarefas com base na alteração do nível da bateria

O Windows não registra esse tipo de detalhe como eventos. No entanto, você pode usar algo como o arquivo em lote abaixo e criar um evento personalizado.


Bateria.cmd

Este arquivo em lote monitora a carga percentual atual da bateria e cria um evento definido pelo usuário se a carga cair abaixo de um valor limite definido pelo usuário.

@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

Notas:

  • O Eventcreatecomando funciona no Windows XP até e incluindo o Windows 10, requer privilégios de administrador para funcionar
  • Defina _thresholdconforme necessário
  • Caso a bateria fique abaixo deste valor 999será gerado um evento com ID no log de eventos do APLICATIVO com a descriçãoBattery charge has dropped
  • Modifique o eventcreatecomando conforme necessário para sua situação.
  • Modifique o timeoutatraso conforme necessário para sua situação.

Exemplo de saída:

Minha bateria atualmente está com 81% de carga. Eu configurei o limite para 82. Aqui está o que acontece quando eu executo Battery.cmd:

> battery
81
threshold reached

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

E aqui está a nova entrada no Log de Eventos:

insira a descrição da imagem aqui


sintaxe de criação de evento

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"

Leitura adicional

  • Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
  • criação de evento- Crie um evento personalizado no Visualizador de eventos do Windows.
  • tarefas- Criar/editar um trabalho/tarefa agendada. O trabalho pode ser criado no computador local ou remoto.
  • wmic- Comando de instrumentação de gerenciamento do Windows.

Responder2

Existe um Microsoft-Windows-Batteryprovedor ETW com BatteryPercentRemainingevento com ID 13. Você pode codificar um projeto que usaEvento de rastreamentopara criar umouvinte em tempo realpara este Microsoft-Windows-Batteryprovedor. O evento possui as entradas RemainingPercentagepara mostrar o status e PercentageChangever a alteração:

insira a descrição da imagem aqui

Ao ver este evento e ver a -1alteração para PercentageChange, execute o programa desejado.

Responder3

OK, o script fornecido por DavidPostill não funciona. É um pequeno script legal, mas o código é errático ou desatualizado.

Aqui está o fixo:

@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

Sugeri esta edição na resposta de DavidPostill, mas não sei por que não foi aprovada...

Responder4

Existe uma maneira muito mais fácil de verificar o nível da bateria. Na área de navegação basta passar o mouse sobre o ícone da bateria e ele dará uma porcentagem.

informação relacionada