ฉันจะรู้ได้อย่างไรว่าระบบบู๊ตเพราะ 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 ซึ่งมีข้อความ:

ที่มา 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?


ฉันกลัวว่านี่เป็นปัญหาเกี่ยวกับไดรเวอร์การ์ดเครือข่าย ฉันได้กดปุ่มปัญหาที่คล้ายกันกับ Windows 10 - ในขณะที่คอมพิวเตอร์ตอบสนองต่อ WoL ได้อย่างสมบูรณ์แบบเมื่อปิดเครื่อง แต่ก็ไม่ตอบสนองเลยถ้าวางในโหมดไฮเบอร์เนตหมายความว่ารหัสไดรเวอร์การ์ดเครือข่ายไม่ได้เตรียมไว้สำหรับสิ่งนั้น . หากคุณสามารถค้นหาไดร์เวอร์รุ่นต่าง ๆ (ใหม่กว่านี้) นี่อาจช่วยแก้ปัญหาของคุณได้ นอกจากนั้นฉันเกรงว่าคุณจะทำเพื่อ
StanTastic

คำตอบ:


1

วิธีการของฉันจะใช้dmidecodeซึ่งจะอ่านข้อมูลจากไบออสด้วยสิ่งที่ชอบ

dmidecode | findstr / R / C: "Wake-up"

เช่นเดียวกันกับคำตอบของ feitingen สำหรับคำถามนี้

หากไม่สามารถใช้งานได้แสดงว่าฮาร์ดแวร์ของคุณไม่สามารถบันทึกค่านั้น


-1

บางทีคุณสามารถตั้งค่าสคริปต์ (หรือซอฟต์แวร์) เพื่อติดตามเหตุการณ์บนพีซีที่ส่งแพ็คเก็ต WOL
สคริปต์นี้สามารถเขียนบางอย่าง (วันที่ปัจจุบัน / เวลา?) ในไฟล์บางแห่ง (บนเครือข่ายใช้ร่วมกัน?) จากนั้นคอมพิวเตอร์ที่เพิ่งเริ่มทำงานสามารถตรวจสอบไฟล์ที่แชร์นี้และพิจารณาว่าขับเคลื่อนโดย WOL หรือไม่ ห่อ


ขอบคุณสำหรับ -1 แต่ความคิดเห็นที่อธิบายว่าทำไมการแก้ปัญหาของฉัน (แต่ทางเลือก) ไม่ดีจะมีประโยชน์มากขึ้น ...
Max

1
ฉันไม่รู้ว่าใครให้ -1 (ไม่ใช่ฉัน) แต่ฉันสามารถอธิบายได้ว่าทำไมข้อเสนอแนะของคุณจะไม่แก้ปัญหาของฉัน: อุปกรณ์ที่ส่งแพ็กเก็ต WoL คือ Steam Link กล่าวอีกนัยหนึ่ง: อุปกรณ์ที่ฉันไม่มีการควบคุมเพิ่มเติมและไม่สามารถเรียกใช้สคริปต์บนส่งแพ็กเก็ต WoL
Jurjen

@Jurjen ขอบคุณสำหรับคำอธิบาย ณ วันนี้ฉันไม่สามารถจินตนาการวิธีที่ง่ายและใช้งานได้จริงในการแก้ปัญหาของคุณ ... (คุณสามารถใช้วิธีแก้ปัญหาที่เสนอกับพีซีเครื่องที่สองอย่างจริงจังซึ่งปลุกให้ตื่นผ่าน WOL เท่านั้นดังนั้น SteamLink ปลุก PC1 แล้ว PC1 จดบันทึกที่ใดที่หนึ่งบนไดรฟ์ที่ใช้ร่วมกัน (บน NAS หรือไม่) จากนั้น PC1 ปลุก PC2 (พีซีที่คุณถาม) จากนั้น PC1 จะปิดตัวเองจากนั้น PC2 จะปิดตัวเอง ตื่นขึ้นมาโดย WOL pachet จาก PC1 (และจาก SteamLink) ... มันสามารถใช้งานได้ แต่มันซับซ้อนและคุณต้องการพีซีเครื่องอื่น ...
สูงสุด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.