TUTOS.EU

Compter le nombre de sessions Citrix actives avec VbScript

Compter le nombre de sessions Citrix ouvertes et actives en local sur une machine avec VbScript et la commande query session

'2015 01 22
'Lancez ce .vbs de préférence avec cscript.exe //Nologo
'Ainsi la première ligne récupérée sera la effectivement la première générée par lexe qui sera lancé (et pas autre chose comme "Microsoft (R) Windows Script Host Version 5.8")

Dim ObjShell, ObjExec, Commande, PIDMonExe, UneLigneDeResultat, NumeroLigneResultat
Dim VarComputername
Dim Position
Dim NbrSessions, NbrSessionsActives

Commande = "query.exe session"

Set ObjShell = CreateObject("WScript.Shell")
Set ObjExec = ObjShell.Exec(Commande) 'Lancement de l'exe

PIDMonExe = ObjExec.ProcessID 'Récupération du PID de l'exe

VarComputername = ObjShell.ExpandEnvironmentStrings ( "%COMPUTERNAME%" )

'Récupération du résultat affiché par l'exe
NumeroLigneResultat = 0
NbrSessions = 0
NbrSessionsActives = 0
Do While Not ObjExec.StdOut.AtEndOfStream

	NumeroLigneResultat = NumeroLigneResultat + 1
	UneLigneDeResultat = ObjExec.StdOut.ReadLine() 'On récupère une ligne générée par l'exe
	UneLigneDeResultat = Trim(UneLigneDeResultat)
	
	If (Len(UneLigneDeResultat) > 0) And (Left(Lcase(UneLigneDeResultat), 7) = "ica-tcp") Then
		NbrSessions = NbrSessions + 1
		Position = Instr(1, Lcase(UneLigneDeResultat), "active", 1)
		If Position > 0 Then NbrSessionsActives = NbrSessionsActives + 1
	End If

Loop

Wscript.echo "NbrSessions : " & NbrSessions
Wscript.echo "NbrSessionsActives : " & NbrSessionsActives


'Shutdown.exe -r -f -t 1 -c "Reboot du serveur car qfarm load à 10000 ou 20000" -d p:2:4

'Wscript.echo "Exe terminé"

Set ObjExec = Nothing
Set ObjShell = Nothing
Lien vers le fichier : cliquez ici