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