fohnbit
Goto Top

WOL Zeitgesteuert an alle Domänen PC senden

Hallo!

Ich benutze Atera um die Niederlassungen zu betreuen. Leider bieten die mir nicht die Möglichkeit die PCs Zeitgesteuert via WOL zu starten.

Gibt es ein Free Tool oder etwas auf dem Windows Server an Bord, um alle PCs der Domäne oder gewählten OU zu starten?

Danke!

Content-Key: 61237905466

Url: https://administrator.de/contentid/61237905466

Printed on: April 27, 2024 at 07:04 o'clock

Member: godlie
godlie Aug 30, 2023 at 12:51:02 (UTC)
Goto Top
Hallo,

du kannst dir mal https://www.heise.de/download/product/wakeonlan-tool-2-77936 ansehen.

grüße
Member: kpunkt
kpunkt Aug 30, 2023 updated at 12:55:38 (UTC)
Goto Top
Tools gibts da wohl eine Menge. Im Zweifel hat Nirsoft was.
Aber das wird eher alles manuell sein, sprich du musst da die einzelnen Clients manuell hinzufügen.

Machen kann man das aber halt auch per Skript. MAC-Adressen wirst du vorher abfragen müssen.

Und siehe da...Google findet so einiges. Darunter auch https://powershell.one/code/11.html
Member: Fohnbit
Fohnbit Aug 30, 2023 updated at 13:18:08 (UTC)
Goto Top
Danke. Das kenne ich soweit.

Jedoch möchte ich nicht für jeden PC die MAC eingeben. Das Handling die Liste aktuell zu halten wäre zu groß.
Es wäre schön wenn er es sich aus dem DHCP Server holen würde.

Server 2012 Wake on Lan Pakete an alle Geräte im DHCP Lease senden

Den Befehl Get-DhcpServerv4Lease kennt er nicht am Server. Muss ich da noch etwas installieren?
Member: DerWoWusste
DerWoWusste Aug 30, 2023 at 13:29:21 (UTC)
Goto Top
Ich würde stattdessen einen geplanten Task auf die PCs deployen, der die Rechner weckt.
Waketimer machen meiner Erfahrung nach weniger Probleme als WOL.
Member: Hubert.N
Hubert.N Aug 30, 2023 at 13:55:46 (UTC)
Goto Top
Moin

Zitat von @Fohnbit:
Den Befehl Get-DhcpServerv4Lease kennt er nicht am Server. Muss ich da noch etwas installieren?

Auf dem DHCP-Server selbst sollte er den kennen. Bei mir tut er das jedenfalls. Ansonsten musst Du die Verwaltungstools installieren.

Gruß
Member: chiefteddy
chiefteddy Aug 30, 2023 at 13:56:10 (UTC)
Goto Top
Eine geplante Task auf einem ausgeschalteten PC ausführen?

Ich starte die PCs automatisch über das BIOS und lasse dann das Backup und die Updates laufen. Nach Ende des Backups wird der PC per Script herunter gefahren.

Jürgen
Member: DerWoWusste
DerWoWusste Aug 30, 2023 at 14:09:22 (UTC)
Goto Top
Eine geplante Task auf einem ausgeschalteten PC ausführen?
Nicht ausgeschaltet, sondern in Sleep oder hibernate. Letzterer verbraucht ja nahezu null.
Member: Fohnbit
Fohnbit Aug 31, 2023 at 06:45:04 (UTC)
Goto Top
So, das
Get-DhcpServerv4Lease
klappt nun.

Das scheint zu passen:
$leases = Get-DhcpServerv4Lease -ComputerName dc1.demo.local -ScopeId 192.168.100.0 | Select-Object "Clientid"  

foreach($_ in $leases)
{
    $mac = $_.Clientid.ToUpper()
   Invoke-WakeOnLan -Verbose -MacAddress $mac
}

function Invoke-WakeOnLan
{
  param
  (
    # one or more MACAddresses
    [Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
    # mac address must be a following this regex pattern:
    [ValidatePattern('^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$')]  
    [string[]]
    $MacAddress 
  )
 
  begin
  {
    # instantiate a UDP client:
    $UDPclient = [System.Net.Sockets.UdpClient]::new()
  }
  process
  {
    foreach($_ in $MacAddress)
    {
      try {
        $currentMacAddress = $_
        
        # get byte array from mac address:
        $mac = $currentMacAddress -split '[:-]' |  
          # convert the hex number into byte:
          ForEach-Object {
            [System.Convert]::ToByte($_, 16)
          }
 
        #region compose the "magic packet" 
        
        # create a byte array with 102 bytes initialized to 255 each:
        $packet = [byte[]](,0xFF * 102)
        
        # leave the first 6 bytes untouched, and
        # repeat the target mac address bytes in bytes 7 through 102:
        6..101 | Foreach-Object { 
          # $_ is indexing in the byte array,
          # $_ % 6 produces repeating indices between 0 and 5
          # (modulo operator)
          $packet[$_] = $mac[($_ % 6)]
        }
        
        #endregion
        
        # connect to port 400 on broadcast address:
        $UDPclient.Connect(([System.Net.IPAddress]::Broadcast),4000)
        
        # send the magic packet to the broadcast address:
        $null = $UDPclient.Send($packet, $packet.Length)
        Write-Verbose "sent magic packet to $currentMacAddress..."  
      }
      catch 
      {
        Write-Warning "Unable to send ${mac}: $_"  
      }
    }
  }
  end
  {
    # release the UDF client and free its memory:
    $UDPclient.Close()
    $UDPclient.Dispose()
  }
}
Member: Fohnbit
Fohnbit Aug 31, 2023 at 07:30:59 (UTC)
Goto Top
Nun noch eine Frage:

Wenn jemand auf "Herunterfahren" am PC kickt, schaltet der PC aus und ist nicht via WoL startbar?

Kann man per GPO das erzwingen, das er bei "Herunterfahren" in den Suspend geht?
Member: aqui
aqui Aug 31, 2023 updated at 08:15:37 (UTC)
Goto Top
Auch beim kompletten Runterfahren bleibt die NIC immer "unter Strom" und reagiert weiter auf die Magic Pakets. Ist ja eine BIOS Funktion der HW! Auch wenn der PC komplett runtergefahren ist. Der tiefere Sinn von WoL!!
Wenn du aber gar nicht mit Mac Adressen hantieren willst, ist WoL logischerweise keine Option für dich, denn das basiert ja alles auf den Mac Adressen der Endgeräte.
Zudem werden deine Niederlassungen sicherlich geroutet sein was dann weitere Herausforderungen für eine WoL Steuerung bedeutet! Siehe zu der Thematik auch HIER.

Unter der Prämisse ist dann die Option des Kollegen @DerWoWusste die deutlich bessere Wahl.
Member: Fohnbit
Fohnbit Aug 31, 2023 updated at 08:38:54 (UTC)
Goto Top
Danke ... wusste nicht das auch bei ganz ausgeschlatenen WoL klappt .. nein das mit MAC Adressen zu aufwecken passt. schon .. muss nur das nächste mal bei allen PCs die Bios prüfen, ob WoL eingeschaltet ist.

In jeder Niederlassung ist ein kleiner Server mit 24/7. Daher kann ich die MagicPakete über diesen senden
Member: aqui
aqui Sep 11, 2023 at 09:53:09 (UTC)
Goto Top
Wenn es das denn nun war bitte deinen Thread hier dann auch als erledigt schliessen!