Comment savoir si le système a démarré à cause de Wake-on-LAN (WoL) ou à cause du bouton d'alimentation?

11

Dans Windows 10, je voudrais savoir comment je peux dire dans un script si le système a démarré parce qu'il a été allumé en recevant un paquet Wake-on-LAN (WoL), ou parce qu'il a été allumé en appuyant sur le bouton d'alimentation .

J'ai trouvé la propriété WakeUpType de la classe Win32_ComputerSystem . Cela est documenté pour renvoyer «l'événement qui provoque la mise sous tension du système». Il y a 9 valeurs de retour possibles, l'une d'entre elles étant "5" (signifiant "LAN Remote").

Malheureusement, sur mon système, il semble toujours retourner "6" (ce qui signifie "Power Switch"):

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

J'ai remarqué qu'après avoir mis le système en veille et l'avoir réveillé à l'aide de WoL, Windows publie un événement dans le journal des événements système avec la source "Power-Troubleshooter" et l'ID d'événement 1, contenant le texte:

Wake Source: appareil - connexion réseau Gigabit Intel (R) 82579V

En outre, powercfg /lastwakeindique la carte réseau comme raison du réveil. Ainsi, au moins lors de la sortie de veille, Windows peut déterminer qu'il s'est réveillé à cause d'un paquet WoL, même si la propriété WakeUpType renvoie toujours "6" (interrupteur d'alimentation) dans ce cas.

Malheureusement, lorsque le système reçoit un paquet WoL à l'état S5, il se met correctement sous tension et démarre, mais je ne peux pas dire qu'il a démarré à cause de WoL. powercfg /lastwakeaffiche exactement la même sortie que lors de la mise sous tension du système à partir de S5 en appuyant sur le bouton d'alimentation:

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

Comment puis-je savoir de manière fiable, à partir de n'importe quel état d'alimentation (jusqu'à S5), que le système a été mis sous / hors tension à cause de WoL?

Jurjen
la source
Je crains que ce soit un problème de pilote de carte réseau. J'ai rencontré un problème quelque peu similaire avec Windows 10 - bien que l'ordinateur réagisse parfaitement à WoL lorsqu'il est éteint, il ne réagit pas du tout s'il est mis en veille prolongée, ce qui signifie que le code de pilote de carte réseau n'est pas préparé pour cela . Si vous pouvez trouver une version différente (plus récente?) Du pilote, cela pourrait résoudre votre problème. A part ça, je crains que vous n'ayez fini.
StanTastic

Réponses:

1

Mon approche serait d'utiliser dmidecode qui lira les données du BIOS, avec quelque chose comme

dmidecode | findstr / R / C: "Réveil"

De même que la réponse de feitingen à cette question

Si cela ne fonctionne pas, votre matériel ne doit pas enregistrer correctement cette valeur.

fusorx
la source
-1

Vous pouvez peut-être configurer un script (ou un logiciel) pour suivre l'événement sur le PC qui ENVOIE le paquet WOL.
Ce script pourrait écrire quelque chose (la date / heure actuelle?) Dans un fichier quelque part (sur un partage réseau?), Puis l'ordinateur qui vient de se réveiller pourrait vérifier ce fichier partagé et déterminer s'il a été alimenté par un WOL paquet.

Max
la source
Merci pour le -1, mais un commentaire expliquant pourquoi ma solution (pourtant alternative) est mauvaise, serait plus utile ...
Max
1
Je ne sais pas qui a donné le -1 (ce n'était pas moi), mais je peux expliquer pourquoi votre suggestion ne résoudra pas mon problème: l'appareil qui envoie le paquet WoL est un lien Steam. En d'autres termes: un appareil sur lequel je n'ai plus de contrôle et sur lequel je ne peux pas exécuter de scripts envoie le paquet WoL.
Jurjen
@Jurjen merci pour l'explication, à ce jour, je ne peux pas imaginer un moyen simple et pratique pour résoudre votre problème ... (théoriquement, vous pouvez utiliser ma solution proposée avec un deuxième PC, qui n'est réveillé que via WOL, de sorte que SteamLink réveille PC1, puis PC1 prend note quelque part sur un lecteur partagé (sur un NAS?) Puis PC1 réveille PC2 (le PC de votre question) puis PC1 s'éteint, puis PC2 vérifie le lecteur partagé pour vérifier s'il a été réveillé par le sachet WOL de PC1 (et donc de SteamLink) ... cela pourrait fonctionner, mais c'est complexe, et vous avez besoin d'un autre PC ...
Max