Trong Windows 10, tôi muốn biết làm thế nào tôi có thể biết trong tập lệnh liệu hệ thống có khởi động được không vì nó được bật bằng cách nhận gói Wake-on-LAN (WoL) hoặc vì nó được bật vì nhấn nút nguồn .
Tôi đã tìm thấy thuộc tính WakeUpType của lớp Win32_ComputerSystem . Điều đó được ghi nhận để trả về "sự kiện khiến hệ thống bật nguồn". Có 9 giá trị trả về có thể có, một trong số chúng là "5" (có nghĩa là "LAN Remote").
Thật không may, trên hệ thống của tôi, nó dường như luôn trả về "6" (có nghĩa là "Công tắc nguồn"):
PS C:\WINDOWS\system32> echo $(Get-WmiObject -class win32_computersystem).wakeuptype
6
Tôi nhận thấy rằng sau khi đặt hệ thống ngủ và đánh thức nó bằng WoL, Windows sẽ đăng một sự kiện trong sự kiện Hệ thống với nguồn "Trình khắc phục sự cố" và ID sự kiện 1, có chứa văn bản:
Nguồn Wake: Thiết bị -Intel (R) Kết nối mạng Gigabit 82579V
Ngoài ra, powercfg /lastwake
báo cáo NIC là lý do để thức dậy. Vì vậy, ít nhất khi thức dậy, Windows có thể xác định rằng nó đã thức dậy vì một gói WoL, mặc dù thuộc tính WakeUpType vẫn trả về "6" (Power Switch) trong trường hợp đó.
Thật không may, khi hệ thống nhận được gói WoL ở trạng thái S5, nó sẽ khởi động và khởi động đúng cách, nhưng tôi không thể nói rằng nó đã khởi động vì WoL. powercfg /lastwake
hiển thị chính xác đầu ra giống như khi hệ thống bật từ S5 vì nhấn nút nguồn:
C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0
Làm thế nào tôi có thể nói một cách đáng tin cậy, từ bất kỳ trạng thái năng lượng nào (lên đến S5), rằng hệ thống được bật / thức dậy vì WoL?