In Windows 10 möchte ich wissen, wie ich in einem Skript feststellen kann, ob das System gestartet wurde, weil es durch Empfangen eines Wake-on-LAN-Pakets (WoL) eingeschaltet wurde oder weil es durch Drücken des Netzschalters eingeschaltet wurde .
Ich habe die WakeUpType-Eigenschaft der Win32_ComputerSystem- Klasse gefunden. Dies wird dokumentiert, um das "Ereignis zurückzugeben, das das System zum Einschalten bringt". Es gibt 9 mögliche Rückgabewerte, von denen einer "5" ist (was "LAN Remote" bedeutet).
Leider scheint es auf meinem System immer "6" (was "Power Switch" bedeutet) zurückzugeben:
PS C:\WINDOWS\system32> echo $(Get-WmiObject -class win32_computersystem).wakeuptype
6
Ich habe festgestellt, dass Windows nach dem Einschalten des Systems und dem Aufwecken mit WoL ein Ereignis im Systemereignisprotokoll mit der Quelle "Power-Troubleshooter" und der Ereignis-ID 1 veröffentlicht, die den folgenden Text enthält:
Wake-Quelle: Gerät -Intel (R) 82579V Gigabit-Netzwerkverbindung
Außerdem wird powercfg /lastwake
die Netzwerkkarte als Grund für das Aufwachen gemeldet. Zumindest beim Aufwachen aus dem Ruhezustand kann Windows feststellen, dass es aufgrund eines WoL-Pakets aufgewacht ist, obwohl die WakeUpType-Eigenschaft in diesem Fall immer noch "6" (Power Switch) zurückgibt.
Wenn das System ein WoL-Paket im S5-Status empfängt, wird es leider ordnungsgemäß hochgefahren und gestartet, aber ich kann nicht sagen, dass es aufgrund von WoL gestartet wurde. powercfg /lastwake
zeigt genau den gleichen Ausgang wie beim Einschalten des Systems von S5 durch Drücken des Netzschalters:
C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0
Wie kann ich aus jedem Energiezustand (bis zu S5) zuverlässig erkennen, dass das System aufgrund von WoL eingeschaltet / aufgewacht ist?