ใน 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 ซึ่งมีข้อความ:
ที่มา Wake: อุปกรณ์ -Intel (R) 82579V การเชื่อมต่อเครือข่าย Gigabit
นอกจากนี้powercfg /lastwake
รายงาน NIC ว่าเป็นสาเหตุของการตื่นขึ้น ดังนั้นอย่างน้อยเมื่อตื่นจากการนอนหลับ Windows สามารถตรวจสอบได้ว่ามันตื่นขึ้นเนื่องจากแพ็กเก็ต WoL แม้ว่าคุณสมบัติ WakeUpType จะยังคงส่งกลับ "6" (สวิตช์ไฟ) ในกรณีนั้น
น่าเสียดายที่เมื่อระบบได้รับแพ็คเก็ตของ WoL ในสถานะ S5 มันจะเปิดและบู๊ตอย่างถูกต้อง แต่ฉันไม่สามารถบอกได้ว่ามันถูกบูทเพราะ WoL powercfg /lastwake
แสดงเอาต์พุตเหมือนกันทุกประการเมื่อระบบเปิดทำงานจาก S5 เนื่องจากการกดปุ่มเพาเวอร์:
C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0
ฉันจะบอกได้อย่างไรจากสถานะพลังงาน (สูงสุด S5) ที่เชื่อถือได้ว่าระบบเปิดทำงาน / ตื่นขึ้นเพราะ WoL?