W systemie Windows 10 chciałbym wiedzieć, w jaki sposób mogę stwierdzić w skrypcie, czy system uruchomił się, ponieważ został włączony przez odbieranie pakietu Wake-on-LAN (WoL), lub ponieważ został włączony z powodu naciśnięcia przycisku zasilania .
Znalazłem właściwość WakeUpType klasy Win32_ComputerSystem . Jest to udokumentowane w celu zwrócenia „zdarzenia, które powoduje włączenie systemu”. Istnieje 9 możliwych wartości zwrotnych, z których jedna to „5” (co oznacza „LAN Remote”).
Niestety w moim systemie zawsze wydaje się, że zwraca „6” (co oznacza „Przełącznik zasilania”):
PS C:\WINDOWS\system32> echo $(Get-WmiObject -class win32_computersystem).wakeuptype
6
Zauważyłem, że po uśpieniu systemu i przebudzeniu go za pomocą WoL, system Windows publikuje zdarzenie w dzienniku zdarzeń systemu ze źródłem „Narzędzie do rozwiązywania problemów z zasilaniem” i identyfikatorem zdarzenia 1, zawierające tekst:
Wake Source: Device -Intel (R) 82579V Gigabit Network Connection
Ponadto powercfg /lastwake
zgłasza kartę sieciową jako przyczynę przebudzenia. Tak więc przynajmniej po przebudzeniu ze snu system Windows jest w stanie ustalić, że obudził się z powodu pakietu WoL, mimo że właściwość WakeUpType nadal zwraca w tym przypadku „6” (Przełącznik zasilania).
Niestety, kiedy system otrzyma pakiet WoL w stanie S5, odpowiednio się włączy i uruchomi, ale nie mogę powiedzieć, że uruchomił się z powodu WoL. powercfg /lastwake
pokazuje dokładnie takie samo wyjście, jak wtedy, gdy system włącza się z S5 z powodu naciśnięcia przycisku zasilania:
C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0
Jak w sposób wiarygodny stwierdzić z dowolnego stanu zasilania (do S5), że system został włączony / obudził się z powodu WoL?
źródło
Odpowiedzi:
Moje podejście polegałoby na użyciu dmidecode, który odczyta dane z BIOS-u z czymś takim
Podobnie jak odpowiedź Feitingena na to pytanie
Jeśli to nie zadziała, twój sprzęt nie może poprawnie rejestrować tej wartości.
źródło
Być może możesz skonfigurować skrypt (lub oprogramowanie) do śledzenia zdarzenia na PC, które WYSŁA pakiet WOL.
Ten skrypt może zapisać coś (bieżącą datę / godzinę?) W jakimś pliku (w udziale sieciowym?), A następnie dopiero co przebudzony komputer może sprawdzić ten udostępniony plik i ustalić, czy został zasilony przez WOL paczka.
źródło