Windows:Rechner oder Server per Batch/Script remote neu starten
Aus znilwiki
Die fertigen Batch-Dateien stehen weiter unten!
In jedem Windows ist der Befehl
shutdown
eingebaut. Diese kann sowohl den lokalen Rechner als auch andere Rechner im Netzwerk herunterfahren oder neu starten.
Am besten funktioniert das natürlich innerhalb einer Domäne.
Zusätzlich zu allen Parametern kann man ggf. noch
/f
angeben - das schliesst ggf. alle Anwendungen ohne Rückfrage. Word würde also z.B. geschlossen ohne das Dokument zu speichern.
Beispiel Neustart
shutdown /r /M \\SERVER1 /t 60 /c "Neustart Test per shutdown.exe" /d p:0:0 shutdown : Der eigenliche Befehl /r : Neu starten /M \\SERVER1 : welcher Rechner soll neu gestartet werden? Hier SERVER1 /t 60 : Wartezeit in Sekunden vor dem Neustart /c "Neustart Test ..." : Kommentar, wir im Ereignisprotokoll eingetragen /d p:0:0 : Grund für den Neustart - hier: Anderer Grund (geplant)
Beispiel Herunterfahren
shutdown /s /M \\SERVER1 /t 10 /c "Nur so" /d p:0:0 shutdown : Der eigenliche Befehl /s : Herunterfahren /M \\SERVER1 : welcher Rechner soll heruntergefahren werden? Hier SERVER1 /t 10 : Wartezeit in Sekunden vor dem Neustart /c "Nur so" : Kommentar, wir im Ereignisprotokoll eingetragen /d p:0:0 : Grund für den Neustart - hier: Anderer Grund (geplant)
Batchdatei für Neustart mehrer Rechner Variante 1
Bei dieser Variante haben wir nur eine einzige Datei. Die Namen der Rechner stehen direkt im Script.
RechnerNeuStartenV1.txt
@echo off
REM ** RechnerNeuStartenV1.cmd ***********************************************
REM ** 2012 von Bernhard Linz für znil.net ***********************************
REM ** admin@znil.de *********************************************************
REM ## 1. Wartezeit zwischen Neustart der einzelnen Rechner angeben:
set WARTEZEIT=30
REM ## 2. Wieviele Sekunden soll der Benutzer eine Warnung bekommen?
set WARNUNGSZEIT=600
REM ## 3. Namen der Rechner die neu gestartet werden soll
REM ## NetBIOS, DNS-Name oder IP-Adresse
REM ## Zeilen kopieren , immer das 'call :RESTART' davor lassen
call :RESTART PC100
call :RESTART PC120.domain.local
call :RESTART 192.168.169.170
call :RESTART Mailserver
call :RESTART Fileserver
REM ##########################################################################
REM ##########################################################################
REM ##########################################################################
REM ## ab hier nichts ändern #################################################
REM ##########################################################################
REM ##########################################################################
goto ENDE
REM ** Hauptschleife
:RESTART
echo.
echo Verarbeite Rechner/Server: %1
echo Warte %WARTEZEIT% Sekunden ...
ping -n %WARTEZEIT% %1 >NUL
echo Initiiere Neustart mit Warnung von %WARNUNGSZEIT% fuer den Benutzer ...
shutdown /r /M \\%1 /t %WARNUNGSZEIT% /f /c "RechnerNeuStartenV1.cmd" /d p:0:0
echo Neustart initiiert!
REM /f ist eigentlich überflüssig - macht er sowieso wenn /t einen Wert größer 0 hat
goto :EOF
REM ##########################################################################
:ENDE
Batchdatei für Neustart mehrer Rechner Variante 2
Bei dieser Variante lesen wir die Namen der Rechner aus einer zweiten Textdatei ein. In der Textdatei muss pro Zeile ein Rechnername stehen.
RechnerNeuStartenV2.txt
@echo off
@echo off
REM ** RechnerNeuStartenV2.cmd ***********************************************
REM ** 2012 von Bernhard Linz für znil.net ***********************************
REM ** admin@znil.de *********************************************************
REM ## 1. Name der Textdatei aus der die Rechner ausgelesen werden sollen,
REM ## Nur ein Name pro Zeile
set LISTE=Reboot_XP-test.txt
REM ## 2. Wieviele Sekunden soll der Benutzer eine Warnung bekommen?
set WARNUNGSZEIT=600
REM ## 3. Wartezeit zwischen Neustart der einzelnen Rechner angeben:
set WARTEZEIT=30
REM ##########################################################################
REM ##########################################################################
REM ##########################################################################
REM ## ab hier nichts ändern #################################################
REM ##########################################################################
REM ##########################################################################
for /F "eol=# tokens=1" %%i in (%LISTE%) do call :RESTART %%i
goto ENDE
REM ** Hauptschleife
:RESTART
echo.
echo Verarbeite Rechner/Server: %1
echo Warte %WARTEZEIT% Sekunden ...
ping -n %WARTEZEIT% %1 >NUL
echo Initiiere Neustart mit Warnung von %WARNUNGSZEIT% fuer den Benutzer ...
shutdown /r /M \\%1 /t %WARNUNGSZEIT% /f /c "RechnerNeuStartenV2.cmd" /d p:0:0
echo Neustart initiiert!
REM /f ist eigentlich überflüssig - macht er sowieso wenn /t einen Wert größer 0 hat
goto :EOF
REM ##########################################################################
:ENDE
--Bernhard Linz 12:19, 23. Apr. 2012 (CEST)