Enteo, Powershell und Wake on Lan (WoL)

boxWie versprochen geht es weiter mit der Automatisierung von Enteo durch Powershell. In diesem Blog Eintrag nehme ich mir die Funktion für das Aufwecken eines PCs vor. Leider funktioniert hier die WoL Funktion von Enteo nicht immer. Das liegt u.a. daran, dass bei einem neuen PC nicht alle Informationen vorliegen. In den meisten Netzen wird ein normales WoL Paket (ein Broadcast Paket) nicht an alle Subnetze verteilt. Der Enteo Server und der zu weckende Client sind im Allgemeinen in unterschiedlichen Subnetzen beheimatet. Daher muss mit einem directed Broadcast gearbeitet werden. Dazu wird das Broadcast Paket direkt an die Broadcast Adresse des Zielsubnetzes geschickt. Dazu ist aber die IP Adresse und die Subnetzmaske zur Ermittlung der Broadcast Adresse notwendig. Diese Information liegt Enteo nicht immer vor und ich habe noch keinen Weg gefunden, diese Info beim Erstellen des Computerkontos mitzugeben.

Daher versucht die nachfolgende Funktion zuerst ein WoL per Enteo anzustossen und danach direkt im Anschluss ein WoL per Kommandozeile. Ich verwende dafür das Tool mc-wol.exe. Es ist ein reines Kommandozeilen Tool und somit gut in einer Powershell aufzurufen.

function doWOL
{
   param($PC,[string]$WOL)
   if (-not $debug)
   {
      Wakeup-EmdbComputer $PC.Path | out-null
      $cmd="C:\Scripte\psexec.exe \\wolserver -s -c "+$WOL
      output $pc.name " Remote WOL: $wol"
      changelog $pc.name "WOL: $cmd"
      invoke-expression -command $cmd | out-null
   }
   else
   {
      output $pc.name "Debugmodus: Hätte WOL per Enteo und WOL per Kommandozeile durchgeführt"
   }
}

Die Funktion benötigt zwei Parameter: Das Emdb-Computerobjet des auzuweckenden PCs und die Kommandozeile für mc-wol.exe. Je nach Umgebung darf nicht jedes Quellsystem ein directed Broadcast Paket verschicken. In diesem Beispiel darf es nur der WOLServer. Daher wird die Kommandozeile, die in Zeile 7 zusammengebaut wird per psexec auf diesem ausgeführt. Die Ausführung erfolgt mit invoke-expression in Zeile 10.

This entry was posted in Powershell and tagged , , , , . Bookmark the permalink.