Powershell: Wakeup-on-LAN
Powershell: Wakeup-on-LAN
Neulich hatte ich das Vergnügen, mich mit dem guten alten Wakeup-On-LAN (WOL) auseinandersetzen zu dürfen. Die Doku schreibt etwas von einem „Magic Paket“, das gesendet wird, um den Rechner aufzuwecken.
Und weil Magie und Powershell sich irgendwie ganz gut vertragen, kurz mal tiefer eingelesen und gelernt, dass es sich dabei um ein simples UDP-Paket handelt, das an die MAC-Adresse des zu weckenden Rechners gesendet wird.
In Powershell sieht das Ganze dann so aus:
function Send-WolPacket {
param (
[Parameter(Mandatory=$true)]
[string]$Mac,
[string]$Broadcast = "255.255.255.255",
[int]$Port = 9
)
$macBytes = ($mac -split '[:-]') | % { [byte]('0x' + $_) }
$packet = ([byte[]](,0xFF * 6 + ($macBytes * 16)))
$udp = new-Object System.Net.Sockets.UdpClient
$udp.Connect($broadcast, $port)
$udp.Send($packet, $packet.Length)
$udp.Close()
}
Beispielaufruf (MAC-Adresse natürlich anpassen!):
Send-WolPacket -Mac "12-34-56-78-9A-BC"
Voraussetzung ist, dass der zu weckende Rechner entsprechend für Wakeup-On-LAN konfiguriert ist (siehe BIOS-Einstellungen). Außerdem funktioniert die Wakeup-On-LAN nicht, wenn der Rechner im Hibernate-Zustand ist. Komplett heruntergefahren oder Standby sind Zustände, aus denen er aufwachen kann.