20

Wake On Lan Script WOL mit PowerShell

Um eure Computer per Wake On LAN / WOL in euren Netzwerk starten zu können, ist ein einfaches PowerShell Script notwendig. Dieses Script sendet ein Magic Paket an die Netzwerkkarten der gelisteten MAC – Adressen. Diese Funktion ist sehr hilfreich, wenn man Beispielsweise  mehrere Computer am Wochenende updaten will. Noch ein Anwendungsgebiet ist, wenn man einen Computer starten will, den man von der Entfernung her sehr schwer erreichen kann. (Anderer Standort / Büro). Praktisch wäre das natürlich als Aufgabenplanung auszuführen, um den Computern am Wochenende Updates installieren zu lassen. 😉

wake on lan

Als erstes brauchen wir eine Liste von MAC – Adressen der Clients in einem Textfile:

(WakeOnLanMAC.txt – SAMPLE)

90FBA678C858
90FBA678C7DB
90FBA678C7C8
90FBA678C517
90FBA678C80B
90FBA678C87F
90FBA678C52F
90FBA678C7DE
90FBA678C80D
8C89A5ED4770
0019999A9012
4437E6C9E468

Die MAC – Adressen für WOL müssen untereinander gelistet werden, ohne ein Komma oder einem anderen Trennzeichen.

 

Danach brauchen wir noch ein Wake On Lan / WOL PowerShell Script:

JuralMin / Pixabay

(wakeonlan.ps1)

#Eingabedatei
$InputFile = "C:\JOBS\WakeOnLanMAC.txt"

function Send-Packet([string]$MacAddress)
{
try
{
$Broadcast = ([System.Net.IPAddress]::Broadcast)

## Create UDP client instance
$UdpClient = New-Object Net.Sockets.UdpClient

## Create IP endpoints for each port
$IPEndPoint = New-Object Net.IPEndPoint $Broadcast, 9

## Construct physical address instance for the MAC address of the machine (string to byte array)
$MAC = [Net.NetworkInformation.PhysicalAddress]::Parse($MacAddress.ToUpper())

## Construct the Magic Packet frame
$Packet = [Byte[]](,0xFF*6)+($MAC.GetAddressBytes()*16)

## Broadcast UDP packets to the IP endpoint of the machine
$UdpClient.Send($Packet, $Packet.Length, $IPEndPoint) | Out-Null
$UdpClient.Close()
}
catch
{
$UdpClient.Dispose()
$Error | Write-Error;
}
}

#Fuer jede MAC in Zeile: Function 'Send-Paket + MAC'
ForEach ($MacAddress in get-content $InputFile)
{
Send-Packet $MacAddress
}

Zuletzt müssen wir nur noch die Zeile 2 anpassen (Pfad zur Datei mit den Adressen), das Powershell Script ausführen und die Computer fahren hoch 🙂

Hinweis

Bitte denkt daran, dass im BIOS des Computers natürlich Wake On LAN aktiviert sein muss.

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

Click Here to Leave a Comment Below 20 comments