У 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?