Làm cách nào để biết hệ thống khởi động vì Wake-on-LAN (WoL) hay do nút nguồn?


11

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 /lastwakebá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 /lastwakehiể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?


Tôi sợ đó là một vấn đề trình điều khiển thẻ mạng. Tôi đã gặp phải một số vấn đề tương tự với Windows 10 - trong khi máy tính phản ứng với WoL hoàn toàn ổn khi tắt nguồn, nó hoàn toàn không phản ứng nếu nó bị ngủ đông, có nghĩa là mã trình điều khiển card mạng không được chuẩn bị cho điều đó . Nếu bạn có thể tìm thấy phiên bản trình điều khiển khác (mới hơn?), Điều này có thể giải quyết vấn đề của bạn. Ngoài ra, tôi sợ bạn đã hoàn thành.
StanTastic

Câu trả lời:


1

Cách tiếp cận của tôi sẽ là sử dụng dmidecode để đọc dữ liệu từ BIOS, với một cái gì đó như

mã hóa | findstr / R / C: "Thức dậy"

Tương tự như câu trả lời của câu hỏi cho câu hỏi này

Nếu điều đó không hoạt động thì phần cứng của bạn không được ghi đúng giá trị đó.


-1

Có lẽ bạn có thể thiết lập một tập lệnh (hoặc một phần mềm) để theo dõi sự kiện trên PC GỬI gói WOL.
Tập lệnh này có thể ghi một cái gì đó (ngày / giờ hiện tại?) Trong một tệp ở đâu đó (trên mạng chia sẻ?) Và sau đó máy tính vừa mới thức dậy có thể kiểm tra tệp được chia sẻ này và xác định xem nó có được cung cấp bởi WOL không gói.


Cảm ơn -1, nhưng một nhận xét giải thích lý do tại sao giải pháp (chưa thay thế) của tôi lại tệ, sẽ hữu ích hơn ...
Tối đa

1
Tôi không biết ai đã cho -1 (không phải tôi), nhưng tôi có thể giải thích tại sao đề xuất của bạn không giải quyết được vấn đề của tôi: thiết bị gửi gói WoL là Steam Link. Nói cách khác: một thiết bị tôi không còn quyền kiểm soát và không thể chạy tập lệnh trên, gửi gói WoL.
Jurjen

@Jurjen cảm ơn vì lời giải thích, cho đến hôm nay tôi không thể tưởng tượng ra một cách đơn giản và thực tế để giải quyết vấn đề của bạn ... (thực tế bạn có thể sử dụng giải pháp đề xuất của tôi với PC thứ hai, chỉ được đánh thức qua WOL, vì vậy mà SteamLink đánh thức PC1, sau đó PC1 ghi chú ở đâu đó trên ổ đĩa chung (trên NAS?) Sau đó PC1 đánh thức PC2 (PC của bạn câu hỏi) sau đó PC1 tự tắt, sau đó PC2 kiểm tra ổ đĩa chung để kiểm tra xem nó đã được được đánh thức bởi WOL pachet từ PC1 (và từ SteamLink) ... nó có thể hoạt động, nhưng nó phức tạp và bạn cần một PC khác ...
Tối đa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.