Come posso sapere se il sistema si è avviato a causa di Wake-on-LAN (WoL) o del pulsante di accensione?


11

In Windows 10, vorrei sapere come posso dire in uno script se il sistema si è avviato perché è stato acceso ricevendo un pacchetto Wake-on-LAN (WoL) o perché è stato acceso a causa della pressione del pulsante di accensione .

Ho trovato la proprietà WakeUpType della classe Win32_ComputerSystem . Ciò è documentato per restituire "l'evento che provoca l'accensione del sistema". Esistono 9 possibili valori di ritorno, uno dei quali è "5" (che significa "LAN Remote").

Sfortunatamente, sul mio sistema sembra sempre restituire "6" (che significa "Interruttore di accensione"):

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

Ho notato che dopo aver messo il sistema in modalità sleep e averlo riattivato utilizzando WoL, Windows registra un evento nel registro eventi di sistema con l'origine "Power-Troubleshooter" e l'ID evento 1, contenente il testo:

Wake Source: Device -Intel (R) 82579V Connessione di rete Gigabit

Inoltre, powercfg /lastwakesegnala la scheda di rete come motivo per svegliarsi. Quindi, almeno al risveglio dal sonno Windows è in grado di determinare che si è svegliato a causa di un pacchetto WoL, anche se la proprietà WakeUpType restituisce comunque "6" (interruttore di accensione) in quel caso.

Sfortunatamente, quando il sistema riceve un pacchetto WoL nello stato S5, si accenderà e si avvierà correttamente, ma non posso dire che sia stato avviato a causa di WoL. powercfg /lastwakemostra esattamente lo stesso output che ha quando il sistema si accende da S5 a causa della pressione del pulsante di accensione:

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

Come posso sapere in modo affidabile, da qualsiasi stato di alimentazione (fino a S5), che il sistema è stato acceso / attivato a causa di WoL?


Temo sia un problema con il driver della scheda di rete. Ho riscontrato un problema un po 'simile con Windows 10 - mentre il computer reagisce perfettamente a WoL quando è spento, non reagisce affatto se viene messo in letargo, il che significa che il codice del driver della scheda di rete non è preparato per quello . Se riesci a trovare una versione diversa (più recente?) Del driver, questo potrebbe risolvere il tuo problema. A parte questo, temo che tu abbia finito.
StanTastic

Risposte:


1

Il mio approccio sarebbe quello di utilizzare dmidecode che leggerà i dati dal BIOS, con qualcosa di simile

dmidecode | findstr / R / C: "Sveglia"

Analogamente alla risposta di feitingen a questa domanda

Se il problema persiste, l'hardware non deve registrare correttamente quel valore.


-1

Forse puoi impostare uno script (o un software) per tracciare l'evento sul PC che INVIA il pacchetto WOL.
Questo script potrebbe scrivere qualcosa (la data / ora corrente?) In un file da qualche parte (su una condivisione di rete?) E quindi il computer appena svegliato potrebbe controllare questo file condiviso e determinare se è stato alimentato da un WOL pacchetto.


Grazie per il -1, ma un commento che spiega perché la mia (ma alternativa) soluzione è male, sarebbe più utile ...
Max

1
Non so chi abbia dato il -1 (non sono stato io), ma posso spiegare perché il tuo suggerimento non risolverà il mio problema: il dispositivo che invia il pacchetto WoL è Steam Link. In altre parole: un dispositivo su cui non ho ulteriore controllo e sul quale non posso eseguire script, invia il pacchetto WoL.
Jurjen,

@Jurjen grazie per la spiegazione, ad oggi non riesco a immaginare un modo semplice e pratico per risolvere il tuo problema ... (teoricamente potresti usare la mia soluzione proposta con un secondo PC, che viene svegliato solo tramite WOL, in modo che SteamLink riattiva PC1, quindi PC1 prendi nota da qualche parte su un'unità condivisa (su un NAS?) Quindi PC1 attiva PC2 (il tuo PC in questione) quindi PC1 si spegne, quindi PC2 controlla l'unità condivisa per verificare se è stata svegliato da WOL pachet da PC1 (e quindi da SteamLink) ... potrebbe funzionare, ma è complesso e hai bisogno di un altro PC ...
Max
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.