zur Navigation springen


Windows Tools

Citrixserver Neustart

Jeder Citrix-Admin mit einem 24Stunden Betrieb kennt das Dilemma mit den notwendigen Citrix-Server Neustarts (Citrix kann nicht besser laufen wie die Applikationen die darauf gehostet werden).

Diese Batch dient zum geplanten, geordneten Neustart von Citrixservern aus einer Farm.
Verwendete Programme

Batch
citrix_neustart.bat
@color 0A
@echo off
cls
rem ## Wochentag ermitteln
FOR /F "tokens=1,2,3 delims=." %%a in ('echo %date%') do set yy=%%c & set mm=%%b & set dd=%%a
set /a "TwoDigitYearMax=2038%%1000"
if 1%yy% LSS 200 if 1%yy% LSS 1%TwoDigitYearMax% (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
If %dow% equ 1 set "WoTa=Mo"
If %dow% equ 2 set "WoTa=Di"
If %dow% equ 3 set "WoTa=Mi"
If %dow% equ 4 set "WoTa=Do"
If %dow% equ 5 set "WoTa=Fr"
If %dow% equ 6 set "WoTa=Sa"
If %dow% equ 7 set "WoTa=So"
rem ## WoTa = %WoTa%
rem ## Welche Server sind betroffen
FOR /F "tokens=1,2" %%i in ('findstr /I "%WoTa%" server.txt') DO call aktion.bat %%j %WoTa%
rem ## Durchlauf beendet.

aktion.bat
set server=%1
set WoTa=%2
rem #### aktion.bat %server% %WoTa%

rem ## Welche Aktionen um aktuelle Uhrzeit (Stunde)
set h=%time:~0,2%

if "%h%"==" 0" goto Sperren
if "%h%"==" 1" goto Meldung
if "%h%"==" 2" goto Meldung
if "%h%"==" 3" goto Meldung
if "%h%"==" 4" goto Meldung
if "%h%"==" 5" goto Meldung
if "%h%"==" 6" goto Neustart
rem Keine Aktionen um diese Uhrzeit
goto ENDE

:Sperren
rem ## Server %server% sperren
TSLogins.exe /SERVER:%server% /OFF

:Meldung
rem ## Meldung an alle User des Servers %server%
TSSessionNFO * /SERVER:%server% > %server%.txt
FOR /F "tokens=4,*" %%i in ('find "Username Name" %server%.txt') DO Echo %%j
FOR /F "tokens=4,*" %%i in ('find "Username Name" %server%.txt') DO msg %%j /SERVER:%server% /TIME:1740 Dieser Citrixserver wird um 06:00 beendet, bitte starten Sie Ihr System (PC/Igel) neu!
goto ENDE

:Neustart
rem ## Neustart des Servers %server%
TSSessionNFO * /SERVER:%server% > %server%.txt
rem ## Alle Anwender vom Citrix beenden
TSLogoff * /SERVER:%server%
rem ## Robocopy fuer Siemens med starten
robocopy.exe \\Master01\PC_Kunde \\%server%\PC_Kunde /R:3 /W:3 /MIR
rem ## Anmeldung zulassen
FOR /F "tokens=1,3" %%i in ('findstr /I "%WoTa% %server%" server.txt') DO TSLogins.exe /SERVER:%server% /ON
rem ## Server Neustart
shutdown /r /m \\%server% /d p:4:1 /c "Citrix-Server Wartung Neustart"
goto ENDE

:ENDE

Steuerungsdatei zur Citrixserver Abschaltung/Neustart

Syntax:
Mo Server E
Mo = der entsprechende Wochentag wie Mo, Di, Mi, Do, Fr, Sa, So
Server = der Server der gemeint ist
E = Entsperrung des Servers (könnte nicht immer richtig sein [Update])
Es können mehrere Server pro Tag behandelt werden.

server.txt
Mo CTX01 E
Di CTX02 E
Mi CTX03 E
Do CTX04 E
Fr CTX05 E
Sa
So CTX01 E
So CTX02 E
So CTX03 E


Als Abfall entstehen Dateien über die Sessionen, die gesondert ausgewertet werden könnten.
%server%.txt
Process ALL Sessions on CTX04 server... 

TS Session ID: 0
TS Client Username Name: administrator
TS WinStation Name: Console
Warning: The User is on the console of the selected server. There is no more information.

TS Session ID: 14
TS Client Username Name: station11
TS WinStation Name: ICA-tcp#134
TS Client Name: IGEL056
TS Client IP: 10.0.90.56
TS Application Name: #Desktop
TS Initial Program: NONE

TS Session ID: 8
TS Client Username Name: station12
TS WinStation Name: ICA-tcp#157
TS Client Name: MUEPC087
TS Client IP: 10.0.100.87
TS Application Name: #Stationsarbeitsplatz
TS Initial Program: icast.exe h:\kkh\dll\wiwa0101.exe

usw....

In diesem Beispiel muss noch der Taskplaner auf citrix_neustart.bat ab 00:05 bis 06:010 alle 30 Minuten eingerichtet werden, sollten andere Zeiten oder Abstände eingestellt werden muss die Batch angepasst werden.


Download

Download: Größe: Version: Programm: Datum:
citrix-neustart.zip 286 KByte 1.00

Citrix-Neustart + Programme

28.02.2011


Seitenanfang