citrix_message.bat

@echo off
setlocal enableDelayedExpansion
rem Nom du serveur
set serv=%1
rem Durée en minutes avant deconnection
set wmin=%2
rem Nombre de message affichés avant logout
set wboucle=%3
rem Message affiché.
set mesg="Please save your work and log out, this server will be restarted in"
echo Envoi de message vers le serveur Citrix : %serv%
echo Délai de prévenance : %wmin% minutes
echo Boucle : %wboucle%
echo Message : %mesg%
set /a wsec=%wmin%*60
rem echo %wsec% sec
QUSER /SERVER:%serv% 2>null
if %errorlevel% NEQ 0 (
echo "No users"
goto fin
)
for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do echo %%b va être deconnecté. 
for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do LOGOFF %%b /SERVER:%serv% /V
:message
QUSER /SERVER:%serv% 2>null
if %errorlevel% NEQ 0 (
echo "No users Disc"
goto fin
)
echo boucle : %wboucle% de %wmin% mn.
if %wboucle% neq 0 (
 set /a wtimeout=!wmin!*!wboucle!
 set wmesg=!mesg! !wtimeout! minutes.
 for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:!serv! ^|findstr "Activ" ') do MSG %%b /SERVER:!serv! /TIME:30 !wmesg!
 for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do LOGOFF %%b /SERVER:%serv% /V 
 TIMEOUT /T !wsec! /NOBREAK >nul
 set /a wboucle=%wboucle%-1
 goto :message
)
for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do echo %%b va être deconnecté. 
for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do LOGOFF %%b /SERVER:%serv% /V 
for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Activ" ') do echo %%b Log off.
for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Activ" ') do LOGOFF %%b /SERVER:%serv% /V
:fin
QUSER /SERVER:%serv% 2>null
exit /B 0

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *