Як я можу визначити, чи завантажувалась система через Wake-on-LAN (WoL) або через кнопку живлення?


11

У Windows 10 я хотів би знати, як я можу сказати в сценарії, чи завантажувалась система, оскільки вона була включена отриманням пакету Wake-on-LAN (WoL), або тому, що вона була включена через натискання кнопки живлення .

Я знайшов властивість WakeUpType класу Win32_ComputerSystem . Це задокументовано для повернення "події, яка спричиняє роботу системи". Існує 9 можливих повернених значень, одне з яких "5" (що означає "LAN Remote").

На жаль, у моїй системі завжди здається, що повертається "6" (що означає "Перемикач живлення"):

PS C:\WINDOWS\system32> echo $(Get-WmiObject -class win32_computersystem).wakeuptype
6

Я помітив, що після увімкнення системи в режим сну і пробудження її за допомогою WoL, Windows публікує подію в журналі подій системи з джерелом "Power-Troubleshooter" та ідентифікатором події 1, що містить текст:

Джерело пробудження: Пристрій -Intel (R) 82579V Гігабітне мережне підключення

Також, powercfg /lastwakeповідомляє НІК як причину пробудження. Так, принаймні при пробудженні зі сну Windows може визначити, що він прокинувся через пакет WoL, навіть якщо властивість WakeUpType все ще повертає "6" (Power Switch) у такому випадку.

На жаль, коли система отримує пакет WoL у стані S5, він буде належним чином живитись та завантажуватися, але я не можу сказати, що він завантажився через WoL. powercfg /lastwakeпоказує точно такий же вихід, як і коли система вмикає сигнал від S5 через натискання кнопки живлення:

C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0

Як я можу надійно сказати, з будь-якого стану живлення (до S5), що система включилася / прокинулася через WoL?


Боюся, це проблема з драйвером мережевої карти. У мене виникає дещо схожа проблема з Windows 10 - хоча комп'ютер реагує на WoL прекрасно, коли він вимикається, він взагалі не реагує, якщо він перебуває в сплячому режимі, тобто код драйвера мережевої картки не готовий до цього . Якщо ви можете знайти іншу (новішу?) Версію драйвера, це може вирішити вашу проблему. Крім того, я боюся, що ви зробили для цього.
StanTastic

Відповіді:


1

Мій підхід полягає у використанні dmidecode, який буде читати дані з BIOS, з чимось подібним

dmidecode | findstr / R / C: "Прокидання"

Подібно до відповіді feitingen на це питання

Якщо це не працює, то ваше обладнання не повинно належним чином записувати це значення.


-1

Можливо, ви можете налаштувати сценарій (або програмне забезпечення) для відстеження події на ПК, що надсилає пакет WOL.
Цей скрипт міг би щось записати (поточну дату / час?) У файл десь (на мережевій спільній доступності?), І тоді просто розбуджений комп'ютер міг би перевірити цей спільний файл і визначити, чи його живлення використовує WOL пакет.


Дякую за -1, але коментар, що пояснює, чому моє (але альтернативне) рішення є поганим, було б корисніше ...
Макс

1
Я не знаю, хто дав -1 (це не я), але можу пояснити, чому ваша пропозиція не вирішить мою проблему: пристрій, що надсилає пакет WoL, є Steam Link. Іншими словами: пристрій, у якого я більше не контролюю і не можу запускати сценарії, надсилає пакет WoL.
Jurjen

@Jurjen дякую за пояснення, на сьогоднішній день я не можу уявити простий і практичний спосіб вирішити вашу проблему ... (теоретично ви можете використовувати моє запропоноване рішення за допомогою другого ПК, який прокинувся лише через WOL, так що SteamLink прокидається PC1, потім PC1 робимо ноту десь на спільному диску (в NAS?), Потім PC1 прокидається PC2 (ПК, про який ви питаєте), потім PC1 вимикається, а потім PC2 перевіряйте спільний диск, щоб перевірити, чи був він прокинувся пачком WOL від PC1 (і так від SteamLink) ... це могло б працювати, але це складно, і вам потрібен інший ПК ...
Макс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.