217 lines
10 KiB
Batchfile
217 lines
10 KiB
Batchfile
@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 -------------------------------------------------------------- |