Id sự kiện Windows để thay đổi mức pin


9

Tôi cần tạo một tác vụ trong TS dựa trên thay đổi mức pin. Giả sử pin của tôi giảm từ 67% xuống 66% . Làm thế nào tôi có thể chạy một nhiệm vụ dựa trên sự kiện này. Windows có ghi nhật ký này không? Tôi không thể tìm thấy thông tin này ở bất cứ đâu.


Phiên bản nào của Windows?
DavidPostill

Thứ 10 (và tốt nhất là W7 nữa)
RiddleMe This

Câu trả lời:


11

Tôi cần tạo một tác vụ trong Trình lập lịch tác vụ dựa trên thay đổi mức pin

Windows không ghi nhật ký loại chi tiết này dưới dạng sự kiện. Tuy nhiên, bạn có thể sử dụng một cái gì đó như tệp bó bên dưới và tạo một sự kiện tùy chỉnh.


Pin.cmd

Tệp bó này giám sát mức sạc phần trăm pin hiện tại và tạo sự kiện do người dùng xác định nếu mức sạc giảm xuống dưới giá trị ngưỡng do người dùng xác định.

@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

Ghi chú:

  • Các Eventcreatecông trình lệnh trên Windows XP lên đến và bao gồm Windows 10, nó đòi hỏi quyền quản trị để làm việc
  • Đặt _thresholdtheo yêu cầu
  • Nếu pin giảm xuống dưới giá trị này, một sự kiện có ID 999sẽ được tạo trong nhật ký sự kiện ỨNG DỤNG với mô tảBattery charge has dropped
  • Sửa đổi eventcreatelệnh theo yêu cầu cho tình huống của bạn.
  • Sửa đổi độ timeouttrễ theo yêu cầu cho tình huống của bạn.

Ví dụ đầu ra:

Pin của tôi hiện đang sạc 81%. Tôi đặt ngưỡng là 82. Đây là những gì xảy ra khi tôi chạy Battery.cmd:

> battery
81
threshold reached

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

Và đây là mục mới trong Nhật ký sự kiện:

nhập mô tả hình ảnh ở đây


cú pháp sự kiện

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"

Đọc thêm

  • Một chỉ mục AZ của dòng lệnh Windows CMD - Một tài liệu tham khảo tuyệt vời cho tất cả những thứ liên quan đến dòng cmd của Windows.
  • eventcreate - Tạo sự kiện tùy chỉnh trong Trình xem sự kiện Windows.
  • scht Nhiệm vụ - Tạo / chỉnh sửa Công việc / Tác vụ theo lịch trình. Công việc có thể được tạo trên máy tính cục bộ hoặc từ xa.
  • wmic - Lệnh quản lý thiết bị Windows.

Tôi thực sự thích điều này! Từ POV của bạn, tốt hơn là tạo sự kiện và chạy tác vụ dựa trên sự kiện (ví dụ: tập lệnh PS)? Hoặc ... sửa đổi tập lệnh này để chạy tập lệnh PS của tôi, nếu mức pin giảm 1%. Tôi giả định rằng Windows đang tạo ra các sự kiện để thay đổi mức pin. Tôi đã không nghĩ về phương pháp này, có thể tốt hơn.
RiddleMe này

1
@MiHa Tùy bạn. Bất cứ điều gì dễ hiểu và duy trì nhất :)
DavidPostill


6

Có một Microsoft-Windows-Batterynhà cung cấp ETW có BatteryPercentRemainingsự kiện với ID 13. Bạn có thể mã hóa dự án sử dụng TraceEvent để tạo trình nghe thời gian thực cho Microsoft-Windows-Batterynhà cung cấp này . Sự kiện này có các mục RemainingPercentageđể hiển thị trạng thái và PercentageChangeđể xem sự thay đổi:

nhập mô tả hình ảnh ở đây

Khi bạn thấy sự kiện này và thấy sự -1thay đổi PercentageChange, hãy chạy chương trình bạn muốn.


2

OK, tập lệnh do DavidPostill cung cấp không hoạt động. Đó là kịch bản nhỏ đẹp, nhưng mã hoặc thất thường hoặc lỗi thời.

Đây là một trong những cố định:

@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

Tôi đã đề nghị chỉnh sửa này thành câu trả lời của DavidPostill, nhưng tôi không biết tại sao nó không được chấp thuận ...


Anh ấy đưa tôi đi đúng hướng, đó là lý do tại sao tôi chấp nhận câu trả lời của anh ấy, nhưng cảm ơn bạn rất nhiều! cho kịch bản cố định của bạn.
RiddleMe This

Trong khi sửa mã, tôi nhận ra rằng lỗi và lỗi như thế nào findstr... Thật quá tệ! Nghiêm túc, Microsoft? Tôi rất ấn tượng với bản hack nhỏ bẩn thỉu của DavidPostill để hoàn thành công việc.
AneesAhmed777

0

Có một cách dễ dàng hơn nhiều để kiểm tra mức pin. Trong khu vực điều hướng chỉ cần đặt chuột lên biểu tượng pin và nó sẽ cho một tỷ lệ phần trăm.


Có, nhưng đó thực sự không phải là điều tôi muốn ... Tôi muốn tự động theo dõi mức pin và dựa trên mức pin, hãy thực hiện một số thứ (một lần nữa tự động)
RiddleMe This 21/1/2017

Xin vui lòng đọc lại câu hỏi một cách cẩn thận. Câu trả lời của bạn không trả lời câu hỏi ban đầu.
DavidPostill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.