@ECHO OFF TITLE DIGITAL DATA - ThinClient Steuerungsskript ECHO Stapelverarbeitungsprogramm ECHO ThinClient Steuerungsskript ECHO - ECHO Digital Data ECHO Ludwig-Rinn-Strasse 16 ECHO 35452 Heuchelheim ECHO Tel.: 0641 / 202360 ECHO E-Mail: info@didalog.de ECHO - ECHO Version 2.1.0 ECHO Letzte Aktualisierung: 01.11.2012 REM -------------------------------------------------------------- REM Definition der Variablen. SET RDSSrv01=192.168.0.1 IF "%1"=="" GOTO RDSSrv01_KeinParameterAufruf SET RDSSrv01=%1 :RDSSrv01_KeinParameterAufruf SET RDSSrv02=192.168.0.2 IF "%2"=="" GOTO RDSSrv02_KeinParameterAufruf SET RDSSrv02=%2 :RDSSrv02_KeinParameterAufruf SET RDSSrv03=192.168.0.3 IF "%3"=="" GOTO RDSSrv03_KeinParameterAufruf SET RDSSrv03=%3 :RDSSrv03_KeinParameterAufruf SET ThinClient=%CD% SET LokalerAdministrator=Administrator SET DienstProgramm1Starten=1 SET DienstProgramm1Pfad=%ThinClient% SET DienstProgramm1Datei=ThinClient_Benutzereinstellungen.cmd SET DienstProgramm2Starten=0 SET DienstProgramm2Pfad="Pfad" SET DienstProgramm2Datei=.exe SET DienstProgramm3Starten=0 SET DienstProgramm3Pfad="Pfad" SET DienstProgramm3Datei=.exe SET IPTest=-1 SET IPTest_Versuche=30 SET RDSTest=0 SET RDSTest_Versuche=30 REM -------------------------------------------------------------- REM -------------------------------------------------------------- ECHO - ECHO Ermittle ob IP-Tests und Dienstprogramme aufgerufen werden sollen. IF "%4"=="" ECHO Standard-Start wird eingeleitet. IP-Tests und Dienstprogramme werden aufgerufen. IF "%4"== start_RDSTest ECHO IP-Tests und Dienstprogramme werden nicht erneut aufgerufen. && goto %4 IF ThinClient_AdministratorBetrieb == "%4" ECHO Starte ohne vorhergehenden Test, direkt in den Administrator-Modus. && goto %4 IF ThinClient_BenutzerBetriebt == "%4" ECHO Starte ohne vorhergehenden Test, direkt in den Benutzer-Modus && goto %4 IF shutdown_geplant == "%4" ECHO Gehe direkt zum geplanten Herunterfahren des ThinClients. && goto %4 IF shutdown_ungeplant == "%4" ECHO Gehe direkt zum ungeplanten Herunterfahren des ThinClients. && goto %4 IF NOT "%4"=="" ECHO Sprungmarke "%4" wird angesteuert. && goto %4 REM -------------------------------------------------------------- REM -------------------------------------------------------------- ECHO - ECHO Ermittle das aktuell angemeldete Benutzerkonto. IF %username% == %LokalerAdministrator% goto ThinClient_AdministratorBetrieb IF NOT %username% == %LokalerAdministrator% goto ThinClient_BenutzerBetrieb REM -------------------------------------------------------------- REM -------------------------------------------------------------- :ThinClient_AdministratorBetrieb ECHO - ECHO Starte ThinClient im Administrator-Modus. ECHO Notwendige Anpassungen in der Windows Registry werden vollzogen. IF EXIST "%ThinClient%\MOD_HKLM_Boot_mit_ThinClient_Skript.reg" del "%ThinClient%\MOD_HKLM_Boot_mit_ThinClient_Skript.reg" reg export "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" "%ThinClient%\MOD_HKLM_Boot_mit_ThinClient_Skript.reg" if not %ERRORLEVEL% == 0 ECHO Registry Sicherung kann nicht erstellt werden, wechsle in den Benutzer Betrieb. && goto ThinClient_BenutzerBetrieb REG ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon" /v Shell /t REG_SZ /d "explorer.exe" /F ECHO - ECHO Starte umfassendes Benutzer-Interface. start "" /D "%ThinClient%" ThinClient_AdministratorBetrieb_Hinweis.vbs userinit start explorer.exe /e, "%ThinClient%" ECHO - ECHO Anpassungen in der Windows Registry werden wiederrufen. reg import "%ThinClient%\MOD_HKLM_Boot_mit_ThinClient_Skript.reg" exit REM -------------------------------------------------------------- REM -------------------------------------------------------------- :ThinClient_BenutzerBetrieb ECHO - ECHO Starte ThinClient im Benutzer-Modus. REM -------------------------------------------------------------- REM -------------------------------------------------------------- if %DienstProgramm1Starten% == 1 ECHO - && ECHO Starte Hintergrund Dienstprogramm Nr 1. if %DienstProgramm1Starten% == 1 (start "DienstProgramm1" /D "%DienstProgramm1Pfad%" /min %DienstProgramm1Datei%) REM -------------------------------------------------------------- REM -------------------------------------------------------------- if %DienstProgramm2Starten% == 1 ECHO - && ECHO Starte Hintergrund Dienstprogramm Nr 2. if %DienstProgramm2Starten% == 1 (start "DienstProgramm2" /D "%DienstProgramm2Pfad%" /min %DienstProgramm2Datei%) REM -------------------------------------------------------------- REM -------------------------------------------------------------- if %DienstProgramm3Starten% == 1 ECHO - && ECHO Starte Hintergrund Dienstprogramm Nr 3. if %DienstProgramm3Starten% == 1 (start "DienstProgramm3" /D "%DienstProgramm3Pfad%" /min %DienstProgramm3Datei%) REM -------------------------------------------------------------- REM -------------------------------------------------------------- :start_IPTest1 ECHO - ECHO Ermittle ob lokaler ThinClient eine IP Adresse bezogen hat (Windows ab Vista). if /I %IPTest% GEQ %IPTest_Versuche% goto shutdown_ungeplant for /F "tokens=12,*" %%i in ('ipconfig^|find "IPv4-Adresse"') do SET IPAdresse=%%j Ping -n 1 %IPAdresse%>NUL if %ERRORLEVEL% == 0 ECHO IPv4-Eintrag gefunden. && (SET /a IPTest=%IPTest%+1) && goto start_RDSTest if %ERRORLEVEL% == 1 (SET /a IPTest=%IPTest%+1) && ECHO Kein IPv4-Eintrag gefunden, ggf. ist dies ein Windows XP OS. && goto start_IPTest2 REM -------------------------------------------------------------- REM -------------------------------------------------------------- :start_IPTest2 ECHO Ermittle ob lokaler ThinClient eine IP Adresse bezogen hat (Windows bis XP). if /I %IPTest% GEQ %IPTest_Versuche% goto shutdown_ungeplant for /F "tokens=13,*" %%i in ('ipconfig^|find "IP-Adresse"') do SET IPAdresse=%%j Ping -n 1 %IPAdresse%>NUL if %ERRORLEVEL% == 0 ECHO IP-Eintrag gefunden, fahre fort. && goto start_RDSTest if %ERRORLEVEL% == 1 (SET /a IPTest=%IPTest%+1) && goto start_IPTest1 REM -------------------------------------------------------------- REM -------------------------------------------------------------- :start_RDSTest if %RDSTest% == %RDSTest_Versuche% goto shutdown_ungeplant ECHO - ECHO Starte Verbindungsversuch(e) zum RDS-Server(n). ECHO - REM -------------------------------------------------------------- REM -------------------------------------------------------------- ECHO Ermittle ob der erster RDS-Server erreichbar ist. Ping -n 1 %RDSSrv01%>NUL if %ERRORLEVEL% == 0 SET RDSSrv=%RDSSrv01% && ECHO Erster RDS-Server ist erreichbar. && goto connect_RDSSrv if not %ERRORLEVEL% == 0 ECHO Erster RDS-Server ist nicht erreichbar. ECHO - REM -------------------------------------------------------------- REM -------------------------------------------------------------- ECHO Ermittle ob der zweiter RDS-Server erreichbar ist. ping -n 1 %RDSSrv02%>NUL if %ERRORLEVEL% == 0 SET RDSSrv=%RDSSrv02% && ECHO Zweiter RDS-Server ist erreichbar. && goto connect_RDSSrv if not %ERRORLEVEL% == 0 ECHO Zweiter RDS-Server ist nicht erreichbar. ECHO - REM -------------------------------------------------------------- REM -------------------------------------------------------------- ECHO Ermittle ob der dritte RDS-Server erreichbar ist. ping -n 1 %RDSSrv03%>NUL if %ERRORLEVEL% == 0 SET RDSSrv=%RDSSrv03% && ECHO Dritter RDS-Server ist erreichbar. && goto connect_RDSSrv if not %ERRORLEVEL% == 0 ECHO Dritter RDS-Server ist nicht erreichbar. ECHO - REM -------------------------------------------------------------- REM -------------------------------------------------------------- ECHO Es konnte keine Verbindung zu einem RDS-Server hergestellt werden. if not %ERRORLEVEL% == 0 (SET /a RDSTest=%RDSTest%+1) && ECHO Wiederhole Verbindungsversuch(e) zum RDS-Server(n). && goto start_RDSTest REM -------------------------------------------------------------- REM -------------------------------------------------------------- :connect_RDSSrv ECHO Die Verbindung wird nun hergestellt. %windir%\system32\mstsc.exe ThinClient.rdp /f /v: %RDSSrv% ECHO Die Verbindung wurde beendet. ECHO - goto shutdown_geplant REM -------------------------------------------------------------- REM -------------------------------------------------------------- :shutdown_geplant start "" /D "%ThinClient%" /WAIT "ThinClient_BenutzerBetrieb_Abfrage.vbs" %0 %RDSSrv01% %RDSSrv02% %RDSSrv03% ECHO Das System wird nun heruntergefahren. "%windir%\system32\shutdown.exe" -s -t 0 /c "Die Sitzung auf dem RDS-Server wurde wie geplant beendet." pause exit REM -------------------------------------------------------------- REM -------------------------------------------------------------- :shutdown_ungeplant ECHO - ECHO Das System wird nun aufgrund eines Fehlers heruntergefahren. ECHO - ECHO Der Test welcher ermittelt, ob der ThinClient eine IP Adresse besitzt, ECHO zeigt %IPTest% Fehlversuch(e) auf, die maximale Toleranz liegt derzeit bei %IPTest_Versuche%. ECHO - ECHO Der Test welcher ermittelt, ob der ThinClient einen RDS-Server erreichen kann, ECHO zeigt %RDSTest% Fehlversuch(e) auf, die maximale Toleranz liegt derzeit bei %RDSTest_Versuche%. ECHO - "%windir%\system32\shutdown.exe" -s -t 60 /c "Fehler: Netzwerkverbindung unterbrochen oder kein RDS-Server erreichbar. Bitte wenden Sie sich an Ihren Systemadministrator!" ECHO - pause ECHO Wollen Sie das herunterfahren des ThinClients abbrechen um weitere Diagnosen vorzunehmen? set /p RebootCMD=Soll der Neustart nun abgebrochen werden? (J/N) if "%RebootCMD%" == "J" %windir%\system32\shutdown.exe -a && ECHO - && ECHO Das Herunterfahren wurde abgebrochen, starte Windows TaskManager. && start "TaskManager" /D "%windir%\system32" taskmgr.exe if "%RebootCMD%" == "j" %windir%\system32\shutdown.exe -a && ECHO - && ECHO Das Herunterfahren wurde abgebrochen, starte Windows TaskManager. && start "TaskManager" /D "%windir%\system32" taskmgr.exe if not "%RebootCMD%" == "J" && ECHO Bitte starten Sie den ThinClient manuell neu! && ECHO - if not "%RebootCMD%" == "j" && ECHO Bitte starten Sie den ThinClient manuell neu! && ECHO - pause exit REM --------------------------------------------------------------