ahstax
Goto Top

Neustart nach Startup-Script

Hallo,

ich versuche unseren IP-Adressen-Pool zu "defragmentieren".

Dazu habe ich ein Batch-Script aus einzelnen Teilen aus dem Internet zusammenkopiert und angepasst. Grundsätzlich läuft das Script (s.u.)
Das Script soll dann via GPO ausgerollt/aktiviert werden. Auch das funktioniert grundsätzlich.
Zum Abschluss des Scripts würde ich gerne das Script n Sekunden warten und dann den Rechner neu starten lassen. Leider funktioniert aber nicht, was ich ausprobiert habe, nämlich:

	choice /N /C 1 /T 5 /D 1 /M "Bitte warten..." >NUL  
	shutdown /r /t 0


gesamter Code:
@echo off
for /F "skip=3 tokens=1,2,3* delims= " %%G in ('netsh interface show interface') DO (  
	IF "%%H"=="Disconnected" netsh interface set interface "%%J" disabled  
	IF "%%H"=="Getrennt" netsh interface set interface "%%J" disabled  
)

for /F "skip=3 tokens=1,2,3* delims= " %%G in ('netsh interface show interface') DO (  
	
	IF "%%H"=="Disconnected" echo interface "%%J" disconected  
	IF "%%H"=="Getrennt" echo interface "%%J" getrennt  
    IF "%%H"=="Connected" echo interface "%%J" conected  
	IF "%%H"=="Verbunden" echo interface "%%J" verbunden  
)

set boot=false

for /f "delims= tokens=2" %%a in ('ping -4 -n 1 %ComputerName% ^| findstr [') do set NetworkIP=%%a  
echo Network IP: %NetworkIP%
set result=false
IF "%NetworkIP:~0,10%"=="192.168.xx." set result=true  

Set CName=PCName
set NewIP=192.168.xx.xx
if "%result%"=="true" if "%computername%" equ "%CName%" if "%NewIP%" neq "%NetworkIP%" (  
	echo .
	echo Anpassung wird vorgenommen
	echo .
	netsh interface ipv4 set address name="LAN-Verbindung" static %NewIP% 255.255.255.0 192.168.xx.xx  
	netsh interface ipv4 delete dnsservers name="LAN-Verbindung" all  
	rem netsh interface ipv4 set dns name="YOUR INTERFACE NAME" static DNS_SERVER  
	netsh interface ipv4 set dnsservers name="LAN-Verbindung" static 192.168.xx.xx primary  
	rem netsh interface ipv4 add dns name="YOUR INTERFACE NAME" addr=DNS_SERVER index=X  
	netsh interface ipv4 add dns name="LAN-Verbindung" addr=192.168.xx.xx  
	netsh interface ipv4 add dns name="LAN-Verbindung" addr=1.1.1.1  
	netsh interface ipv4 add dns name="LAN-Verbindung" addr=1.0.0.1  

	set boot=true
) else (
	echo .
	echo keine Anpassung notwendig
	echo .
)

EDIT war falsch kopiert: if "%boot%"=="boot" (  
if "%boot%"=="true" (  
	echo .
	echo Reboot
	echo .
	choice /N /C 1 /T 5 /D 1 /M "Bitte warten..." >NUL  
	shutdown /r /t 0
) else (
	echo .
	echo kein Reboot
	echo .
)


Warum wird die Pause nicht gemacht und der Rechner nicht neu gestartet?

Neugierige Grüße,
Andreas

Content-Key: 419314

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

Printed on: April 25, 2024 at 09:04 o'clock

Member: godlie
Solution godlie Feb 19, 2019 at 13:35:25 (UTC)
Goto Top
Hallo,

evtl. weil du dein boot auf true und nicht auf boot setzt?
siehe Zeile 37 u. 44
Member: ahstax
ahstax Feb 19, 2019 at 14:10:59 (UTC)
Goto Top
Damn... ich hab im Script was "rauskommentiert" und für die Frage hier nicht wieder korrigiert. Jetzt ist es korrigiert

Ich habe das Script auch schon als angemeldeter Administrator ausgeführt, was aber leider auch nicht klappte....
Member: clubmaster
Solution clubmaster Feb 19, 2019 at 14:38:45 (UTC)
Goto Top
Eventuell weil du den -t Timeparameter auf 0 gesetzt hast? shutdown /r /t 30 ist der Standartwert.
Member: ahstax
ahstax Feb 19, 2019 updated at 15:16:28 (UTC)
Goto Top
Nein, das brachte leider auch nichts....


Ich versuche gerade, das genannte Script nicht als Startup- sondern als Shutdown-Script laufen zu lassen. Das klappt noch viel weniger (startet nicht einmal...)
Member: Pedant
Solution Pedant Feb 19, 2019 at 15:26:54 (UTC)
Goto Top
Hallo ahstax,

wird denn echo Reboot oder echo kein Reboot ausgeführt, also eine der beiden Meldungen ausgegeben oder passiert weder noch?

Die Zeile 49 (choice ...) kannst Du getrost weglassen, da Du dem Betrachter eigentlich keine Wahl lässt.
Letztendlich ist sie nur eine komplizierte Variante von
timeout /t 5 > nul
und auch das ist unnötig, wenn Du den Timeout hinsetzt wo er hingehört, also in Zeile 50:
shutdown /r /t 5
und wenn Du keine Meldung zuvor ausgibst, die auf den Shutdown hinweist, dann brauchst Du den Timeout überhaupt nicht, womit wir wieder beim
shutdown /r /t 0
wären, aber ohne vorhergehendes choice oder timeout.

Gruß Frank
Member: ahstax
ahstax Feb 19, 2019 at 15:36:03 (UTC)
Goto Top
Hab ich probiert, bringt (in meinem Fall!!) auch keine Besserung...

OK... nach viel Probieren funktioniert mein Vorhaben jetzt mit dem Script während des Shutdowns. Für mich ist das Problem damit gelöst.

Vielen Dank für Eure Bemühungen!!!
Member: Pedant
Pedant Feb 19, 2019 at 15:38:42 (UTC)
Goto Top
Hallo ahstax,

Du schreibst Du rollst das Skript per GPO aus.
Wenn es ein Startup- oder Shutdown-Skript ist, läuft es nicht im Benutzer-Kontext sondern im System-Kontext.
Vielleicht war das Problem?

Gruß Frank
Member: ahstax
ahstax Feb 19, 2019 at 16:03:46 (UTC)
Goto Top
Ist nicht ausgeschlossen. Allerdings wüsste ich (was nichts heißt!) nicht unbedingt warum. Das System sollte doch einen Neustart durchführen dürfen...?!
Member: Pedant
Pedant Feb 19, 2019 at 16:20:59 (UTC)
Goto Top
Hallo ahstax

Zitat von @ahstax:
Das System sollte doch einen Neustart durchführen dürfen...?!
das würde ich eigentlich auch erwarten, weiß es aber auch nicht.
Du könntest testweise einen Einzeiler als Startup-Skript laufen lassen, bei dem dessen Ausgaben und Fehlermeldungen in eine log.txt umgeleitet werden.
shutdown /r /t 0 1>log.txt 2>&1
Dann könntest Du darin nachlesen, ob das System dazu etwas zu melden hat.

Gruß Frank