tastentipper
Goto Top

Wake on LAN für OU

Hallo zusammen,

hat jemand ein fertiges Skript (bevorzugt eine Batch) mit dem man Wake on LAN für alle Clients einer OU der Active Directory veranlassen kann?

Danke im voraus!


Windows Server 2003, XP Clients

Content-ID: 169527

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

Ausgedruckt am: 05.11.2024 um 20:11 Uhr

dog
dog 12.07.2011 um 02:28:47 Uhr
Goto Top
Wie soll das gehen?

Ein ausgeschalteter PC hat keine IP, sondern nur eine MAC für WOL.
AD speichert aber keine MACs.
64748
64748 12.07.2011 um 07:25:23 Uhr
Goto Top
Hallo Tastentipper,

zusätzlich zu dem was dog schreibt, die OU wird ja für den Rechner erst dann relevant wenn er gestartet ist und sich an der Domäne authentifiziert hat.

Was ich mir vorstellen kann und Dir vielleicht weiter hilft: Du könntest für die OU via GPO ein Skript ausführen lassen, dass die relevanten Daten (wahrscheinlich Computername und MAC-Adresse) ausliest und an Dich weiterleitet. Dann brauchst Du nicht an jeden einzelnen Rechner.

Markus
bugmenever
bugmenever 12.07.2011 um 08:26:00 Uhr
Goto Top
Hallo,

also ich nutze für solche Sachen die Free Version von Specops Gpupdate (http://www.specopssoft.com/products/specops-gpupdate).
Das Programm bindet sich im Kontextmenü im AD-Modul ein, damit kann man Gpupdate, Start, Restart, Shutdown & Windows Update ausführen.
Die MAC-Adresse holt sich das Programm vom DHCP-Server.

mfg
Phalanx82
Phalanx82 12.07.2011 um 09:27:09 Uhr
Goto Top
Hallo,

such mal mit "Suchmaschine deiner Wahl Hier einsetzen" nach WoL2.
Das ist ein nettes Freeware Programm mit Windows Gui zum erstellen
von WoL Listen incl. Rechnername, IP, MAC (für WoL benötigt) und ein
paar weiteren Gymmiks wie Reboot, Shutdown etc.

Mit dem Tool kannst Du, sofern Du Deine WoL Liste angefertigt hast, auch
mal eben alle eingetragenen Rechner mit einem Klick hochfahren oder
herunterfahren.


Mfg.
Tastentipper
Tastentipper 12.07.2011 um 09:44:30 Uhr
Goto Top
Hallo und schon einmal Danke für die Hinweise aus denen ich folgende Lösungsmöglichkeit ableiten könnte:

1. Skript erstellt eine Liste mit Computernamen der OU - das geht bestimmt (dsquery oder ldap etc..), ich weiß nur nicht wie.
2. Skript startet WOL2.exe mit der Liste (vermutlich holt sich WOL2.exe über den DNS und den DHCP-Lease die IP und dann nötige MAC-Adresse?)

KÖNNTE DAS JEMAND SKRIPTEN, DER SICH AUSKENNT??? Am liebsten als Batch - da habe ich ein wenig Ahnung und kann es nachvollziehen.

P.S: An bugmenever: Kann man "Specops Gpupdate" denn automatisiert ausführen (z.B. per Kommandozeile) oder nur manuell?


Mit Hoffnung

Tastentipper
bugmenever
bugmenever 12.07.2011 um 12:09:00 Uhr
Goto Top
Leider kann man in der Free Version nichts automatisieren sondern nur manuell starten.
So weit ich weiß besteht mit der Pro Version die Möglichkeit mit Powershell Aufgaben zu automatisieren.
Tastentipper
Tastentipper 12.07.2011 um 22:15:05 Uhr
Goto Top
Hallo zusammen
und Danke für die Rückmeldung, bugmenever

ich habe das Problem gelöst.

Hier habe ich ein Batch-Skript "WakeUpAll.cmd" gefunden, welches WOL.exe verwendet. Im Gegensatz zu WOL2.exe benötigt es weniger Systemvorraussetzungen (z.B. kein .NET 3.5).
http://www.rscwmsystems.org.uk/rsc-it-blog/?p=280

Man benötigt nur WOL.exe, die man in den selben Ordner wie das Skript speichert.
http://www.gammadyne.com/cmdline.htm#wol

Das Skript "WakeUpAll.cmd" habe ich etwas modifiziert, da es einige Unzulänglichkeiten hatte.

Zum Konfigurieren des Skriptes die ersten Zeilen anpassen:

Set OU gehört zum dsquery-Befehl und legt den Pfad in der AD fest zu OU in der die Computer sind, die gestartet werden sollen.
SET SCOPE ist die Netzwerk(basis)-IP-adresse
SET DHCP ist die IP-adresse des DHCP-Servers



@echo off
SET OU="OU=raum,OU=workstations,DC=schule,DC=local"
SET SCOPE=10.1.0.0
SET DHCP=10.1.1.1
SET WOLCMD=WOL.EXE

SETLOCAL EnableDelayedExpansion

REM Query Active Directory for list of computers to be woken up
FOR /F "usebackq tokens=1 delims=," %%a IN (`dsquery computer %OU%`) DO (
SET MACHINE=%%a
SET MACHINE=!MACHINE:~4,20!
SET FOUND=N

ECHO RESOLVING IP ADDRESS FOR !MACHINE!
FOR /F "usebackq tokens=1,2 delims=: " %%e IN (`nslookup !MACHINE!` ) DO (
IF /I %%e==address SET IP=%%f
IF /I %%e==name SET FOUND=Y
)

IF /I !FOUND!==Y (
ECHO FOUND IP ADDRESS: !IP!
ECHO RESOLVING MAC ADDRESS
FOR /F "usebackq tokens=1,3,4,5,6,7,8 delims=- " %%i IN (`netsh dhcp server %DHCP% scope %SCOPE% show clients 0`) DO (
IF /I %%i==!IP! (
SET MAC=%%j%%k%%l%%m%%n%%o
ECHO FOUND MAC ADDRESS: !MAC!
ECHO WAKING UP !MACHINE!
%WOLCMD% !MAC! >NUL:
ECHO.
)
)
)
)
)



Danke an alle Helfer und vor allem an Colleen Romero für sein Skript!