Wake On Lan Script WOL mit PowerShell - www.itnator.net

Du hast eine Frage?

Du haste eine ganz andere Frage? Diese kannst du in unseren Fragen & Antworten stellen.
Nach kurzer Zeit sollte eine brauchbare Antwort zu finden sein.


kostenlos einreichen
6

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.

  • Robert sagt:

    Hallo,
    muss außer dem Inputfile-Pfad noch etwas angepasst werden?
    Danke und Gruß
    Robert

    • Johannes Huber sagt:

      Hallo Robert,

      nein – außer dem input-File in Zeile 2 muss nichts mehr angepasst werden.
      Bitte achte darauf, dass jede MAC-Adresse in einer Zeile stehen muss.


      MACADRESSE1
      MACADRESSE2
      MACADRESSE3
      ...

      Gruß Johannes

  • Joe sagt:

    Hallo,

    kann man das Skript auf einem Server ablegen und es dort über eine Freigabe und einen selbst erstellten Nutzer dafür ausführen lassen?

    Gruß Joe

    • Johannes Huber sagt:

      Hallo Joe,

      im Endeffekt ist es dem Script egal wo es liegt.
      Es muss nur auf folgende Dinge geachtet werden:

      – Der Pfad zu der MAC – Adressen – Liste muss verfügbar sein
      – Die Clients müssen evtl. im selben IP – Subnetz sein
      – Je nach dem wie eure Struktur ist, benötigt man erhöhte Rechte

      Aber zurück zu deiner Frage, JA ansich sollte das kein Problem darstellen.

      Gruß Johannes

  • brain sagt:

    man kann den (dynamischen) pfad des laufenden scrips ermitteln,
    damit kann man zusätzliche dateien, relativ vom ort des scrips, ermitteln. dadurch braucht man keinen festen pfad mehr für die “WakeOnLanMAC.txt” verwenden, wenn diese z.B. im selben verzeichnis ist wie das script.

  • sidebar
    >