Bagaimana saya bisa tahu apakah sistem boot karena Wake-on-LAN (WoL) atau karena tombol power?

11

Di Windows 10, saya ingin tahu bagaimana saya bisa tahu dalam skrip apakah sistem boot karena dihidupkan dengan menerima paket Wake-on-LAN (WoL), atau karena dihidupkan karena menekan tombol power .

Saya menemukan properti WakeUpType dari kelas Win32_ComputerSystem . Itu didokumentasikan untuk mengembalikan "peristiwa yang menyebabkan sistem menyala". Ada 9 kemungkinan nilai yang dikembalikan, salah satunya adalah "5" (artinya "LAN Remote").

Sayangnya, pada sistem saya sepertinya selalu mengembalikan "6" (artinya "Power Switch"):

PS C:\WINDOWS\system32> echo $(Get-WmiObject -class win32_computersystem).wakeuptype
6

Saya perhatikan bahwa setelah meletakkan sistem ke mode sleep dan membangunkannya menggunakan WoL, Windows memposting acara di System eventlog dengan sumber "Power-Troubleshooter" dan event ID 1, yang berisi teks:

Sumber Bangun: Perangkat -Intel (R) 82579V Koneksi Jaringan Gigabit

Juga, powercfg /lastwakelaporkan NIC sebagai alasan untuk bangun. Jadi, setidaknya ketika bangun dari tidur Windows dapat menentukan bahwa ia bangun karena paket WoL, meskipun properti WakeUpType masih mengembalikan "6" (Sakelar Daya) dalam kasus itu.

Sayangnya, ketika sistem menerima paket WoL dalam keadaan S5, ia akan hidup dengan benar dan melakukan boot, tetapi saya tidak dapat mengatakan bahwa ia melakukan booting karena WoL. powercfg /lastwakemenunjukkan output yang persis sama dengan ketika sistem dinyalakan dari S5 karena menekan tombol daya:

C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0

Bagaimana saya bisa tahu, dari kondisi daya apa pun (hingga S5), bahwa sistem dinyalakan / bangun karena WoL?

Jurjen
sumber
Saya khawatir ini adalah masalah driver kartu jaringan. Saya telah memukul masalah yang agak mirip dengan Windows 10 - sementara komputer bereaksi terhadap WoL dengan sangat baik ketika dimatikan, itu tidak bereaksi sama sekali jika dimasukkan ke hibernasi, yang berarti bahwa kode driver kartu jaringan tidak siap untuk itu . Jika Anda dapat menemukan versi driver (yang lebih baru?) Yang berbeda, ini dapat menyelesaikan masalah Anda. Terlepas dari itu, saya khawatir Anda sudah selesai.
StanTastic

Jawaban:

1

Pendekatan saya adalah menggunakan dmidecode yang akan membaca data dari BIOS, dengan sesuatu seperti

dmidecode | findstr / R / C: "Bangun"

Demikian pula dengan jawaban feitingen untuk pertanyaan ini

Jika itu tidak berhasil maka perangkat keras Anda tidak boleh merekam nilai itu dengan benar.

fusorx
sumber
-1

Mungkin Anda dapat mengatur skrip (atau perangkat lunak) untuk melacak acara di PC yang MENGIRIM paket WOL.
Script ini dapat menulis sesuatu (tanggal / waktu saat ini?) Dalam suatu file di suatu tempat (pada jaringan berbagi?) Dan kemudian komputer yang baru saja bangun dapat memeriksa file bersama ini, dan menentukan apakah itu telah didukung oleh WOL paket.

Maks
sumber
Terima kasih atas -1, tetapi komentar yang menjelaskan mengapa solusi saya (belum alternatif) buruk, akan lebih bermanfaat ...
Maks
1
Saya tidak tahu siapa yang memberikan -1 (bukan saya), tapi saya bisa menjelaskan mengapa saran Anda tidak akan menyelesaikan masalah saya: perangkat yang mengirim paket WoL adalah Steam Link. Dengan kata lain: perangkat saya tidak memiliki kontrol lebih lanjut dan tidak dapat menjalankan skrip aktif, mengirimkan paket WoL.
Jurjen
@Jurjen terima kasih atas penjelasannya, sampai hari ini saya tidak dapat membayangkan cara sederhana dan praktis untuk menyelesaikan masalah Anda ... (secara teoritis Anda dapat menggunakan solusi yang saya usulkan dengan PC kedua, yang hanya dibangunkan melalui WOL, sehingga SteamLink membangunkan PC1, kemudian PC1 mencatat di suatu tempat di drive bersama (pada NAS?) Kemudian PC1 membangunkan PC2 (pertanyaan PC Anda) lalu PC1 mati sendiri, kemudian PC2 memeriksa drive bersama untuk memeriksa apakah sudah terbangun oleh pachet WOL dari PC1 (dan dari SteamLink) ... itu bisa bekerja, tetapi rumit, dan Anda memerlukan PC lain ...
Max