8
0
2024-01-24 16:42:38 +01:00

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 --------------------------------------------------------------