В Windows 10 я хотел бы знать, как я могу определить в скрипте, загружалась ли система, потому что она была включена при получении пакета Wake-on-LAN (WoL), или потому что она была включена из-за нажатия кнопки питания ,
Я нашел свойство WakeUpType класса Win32_ComputerSystem . Это задокументировано для возврата «события, которое приводит к включению системы». Существует 9 возможных возвращаемых значений, одно из которых «5» (что означает «Удаленный LAN»).
К сожалению, в моей системе всегда возвращается «6» (что означает «выключатель питания»):
PS C:\WINDOWS\system32> echo $(Get-WmiObject -class win32_computersystem).wakeuptype
6
Я заметил, что после перевода системы в спящий режим и ее активации с помощью WoL Windows публикует событие в системном журнале событий с источником «Power-Troubleshooter» и идентификатором события 1, содержащим текст:
Источник пробуждения: Device -Intel (R) 82579V Gigabit Network Connection
Также powercfg /lastwake
сообщает NIC как причину просыпания. Таким образом, по крайней мере при выходе из спящего режима Windows может определить, что она проснулась из-за пакета WoL, даже если свойство WakeUpType по-прежнему возвращает «6» (выключатель питания) в этом случае.
К сожалению, когда система получает пакет WoL в состоянии S5, он правильно включается и загружается, но я не могу сказать, что он загрузился из-за WoL. powercfg /lastwake
показывает точно такой же вывод, как и при включении системы с S5 из-за нажатия кнопки питания:
C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0
Как я могу достоверно определить из любого состояния питания (до S5), что система включилась / проснулась из-за WoL?
источник
Ответы:
Мой подход заключается в использовании dmidecode, который будет читать данные из BIOS, с чем-то вроде
Аналогично ответу Файтинга на этот вопрос
Если это не работает, то ваше оборудование не должно правильно записывать это значение.
источник
Может быть, вы можете настроить скрипт (или программное обеспечение) для отслеживания события на ПК, который отправляет пакет WOL.
Этот сценарий может записать что-то (текущую дату / время?) В файл где-нибудь (на сетевом ресурсе?), А затем только что проснувшийся компьютер может проверить этот общий файл и определить, был ли он включен WOL пакет.
источник