Benutzer mit den meisten Antworten
Windows Server 2003

Frage
-
wie kann ich zur Benachrichtigung der Clients herausfinden, welche aktiv am Server 2003 angemeldet sin.
Hintergrund: Die Server mit der SQL-Datenbank müssen ab und zu am Tag heruntergefahren werden. Zur Info an die Clients nehme ich eine batch-Datei mit den Befehlen \\ NamePC\ Shutdown.... wobei diese Liste der Batchdatei dann hängenbleibt, wenn der erste, in der Liste der Namen aufgeführte PC nicht eingeschalten ist.
Um dem Problem der einen Batchdatei mit allen PC-Namen zu umgehen habe ich eine Datenbank geschrieben, wo ich jeden einzelnen PC mit der für diesen zugeschnittenen BAtch-Datei ansteuere. Dies funktioniert auch, es bleiben aber die dos.Fenster auf, da keine Ausführung des Befehls möglich ist.
Ich benötige eine Möglichkeit zur Ermittlung der Aktiven, eingeschaltenen Clients.
Wer kann helfen?
Mit bestem Dank im voraus!
VD-Foester- Verschoben Jonny Best Dienstag, 9. Februar 2010 15:42 Bitte keine Anfragen im Archiv-Forum (Von:Aus der MSDN Hotline: Häufig gestellte Fragen und deren Antworten)
Antworten
-
Da die Namen der PCs ja bekannt sind, genügt es den Status mit PING zu prüfen. Hier gibt es dazu ein Beispiel: http://de.wikibooks.org/wiki/Batch-Programmierung:_Beispiele#Message-Ping
Im Errorlevel steht dann das Resultat der Ping-Anfrage und kann nun mit der If-Else-Konstruktion behandelt werden. (%errorlevel% ist 0 falls der Host erreichbar war, 1 sonst).
set status=%errorlevel%
if %status%==0 (echo %1 online
) else ( echo %1 ist offline
)
Grüße,
Jonny- Als Antwort markiert VD-Foerster Donnerstag, 11. Februar 2010 14:38
Alle Antworten
-
Da die Namen der PCs ja bekannt sind, genügt es den Status mit PING zu prüfen. Hier gibt es dazu ein Beispiel: http://de.wikibooks.org/wiki/Batch-Programmierung:_Beispiele#Message-Ping
Im Errorlevel steht dann das Resultat der Ping-Anfrage und kann nun mit der If-Else-Konstruktion behandelt werden. (%errorlevel% ist 0 falls der Host erreichbar war, 1 sonst).
set status=%errorlevel%
if %status%==0 (echo %1 online
) else ( echo %1 ist offline
)
Grüße,
Jonny- Als Antwort markiert VD-Foerster Donnerstag, 11. Februar 2010 14:38
-
Herzlichen Dank,
ich habe es schon umgesetzt und es klappt hervorragen.
Ich habe den script wie folgt geändert:
@echo off:mainloop
:: pinge den Host 1 mal und leite die Ausgabe nach 'nul' um (keine sichtbare Ausgabe)
ping xxx.xxx.xxx.xxx -n 1 > NUL
:: speichere den Errorlevel in die Variable 'status'
set status=%errorlevel%
if %status%==0 (shutdown -s -f -m \\Rechnername.Domänenname.local -t 120 -c "Wartung" -d p:4:1) else Exit
if %status%==0 Exit
:: minimalistische Fortschrittsanzeige
REM (Set /P i=X) < NUL
:: sleep workaround (wer eine bessere, einfachere, genauere & universellere Möglichkeit kennt bitte korrigieren)
:: pinge den lokalen Computer 1 mal
ping localhost -n 2 >nul
:: gehe zurück zum anfang
goto mainloop
mit bestem Dank
VD-Foerster