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 /lastwake
laporkan 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 /lastwake
menunjukkan 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?