verlegenmanneke Posted January 11, 2008 Posted January 11, 2008 (edited) I'm building a script to export all idle sessions in Citrix to Excel; so I have an overviewof the load on all servers from the Citrix Farm.This is the scriptOption ExplicitDim objFarm, objSession, SessionList, tlst, tdis, tcur, t1, t2, minutes, i, fcDim SessionStateSessionState = Array("Unknown", _ "Active", _ "Connected", _ "Connecting", _ "Shadowing", _ "Disconnected", _ "Idle", _ "Listening", _ "Resetting", _ "Down", _ "Init")Dim objFSO, objTextFileDim arrSessionsA, arrSessionsB, arrSessionInfoA, arrSessionInfoBDim strText, strSession, strSessionState, strCurDT, strCurDTcln, strDataOutFile2Dim iA, iBDim duplicateConst ForReading = 1Const ForWriting = 2Const ForAppending = 8Const DataOutFile1 = "Idle_Sessions.csv"Const DataInFile = "Idle_Sessions.csv"strCurDT = nowi = 1fc = 0do until fc = 4 if Mid(strCurDT, i, 1) = "/" Then fc = fc + 1 strCurDTcln = strCurDTcln & "-" else if Mid(strCurDT, i, 1) = ":" Then fc = fc + 1 strCurDTcln = strCurDTcln & "-" else if Mid(strCurDT, i, 1) = " " Then strCurDTcln = strCurDTcln & "_" else strCurDTcln = strCurDTcln & Mid(strCurDT, i, 1) end if end if end if i = i + 1loopstrCurDTcln = strCurDTcln & Mid(strCurDT, i, 1)strCurDTcln = strCurDTcln & Mid(strCurDT, i + 1, 1)strDataOutFile2 = strCurDTcln & "_Idle_Sessions_filtered.csv"'open file in Append modeSet objFSO = CreateObject("scripting.filesystemobject")Set objTextFile = objFSO.OpenTextFile(strDataOutFile2, ForAppending, True)Set objFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")' Initialize the farm object.objFarm.Initialize(MetaFrameWinFarmObject)Set SessionList = objFarm.SessionsFor Each objSession In SessionList Set tlst = objSession.LastInputTime(TRUE) Set tdis = objSession.DisconnectTime(TRUE) Set tcur = objSession.CurrentTime(TRUE) strSessionState = SessionState(objSession.SessionState) t2 = tcur.minute + tcur.hour*60 if strSessionState = "Active" Then t1 = tlst.minute + tlst.hour*60 minutes = t2 - t1 If Minutes > 120 Then Minutes = 0 End if End if if strSessionState = "Disconnected" Then t1 = tdis.minute + tdis.hour*60 minutes = t2 - t1 + 120 If Minutes > 240 Then Minutes = 240 End if If Minutes < 0 Then Minutes = 0 End if End if 'write session info to file objTextFile.writeline (objSession.ServerName & "," & objSession.UserName & "," & _ objSession.SessionName & "," & CStr(objSession.SessionID) & "," & _ objSession.ClientName & "," & strSessionState & "," & Minutes)Next'close fileobjTextFile.close'open file for Reading into sort arraysSet objTextFile = objFSO.OpenTextFile(strDataOutFile2, ForReading, True)strText = objTextFile.ReadAllobjTextFile.CloseSet objTextFile = objFSO.OpenTextFile (strDataOutFile2, ForWriting, True)arrSessionsA = Split(strText, vbCrLf)arrSessionsB = Split(strText, vbCrLf)iA = 0duplicate = 0do until arrSessionsA(iA) = "" arrSessionInfoA = Split(arrSessionsA(iA), ",") iB = iA + 1 do until arrSessionsA(iB) = "" arrSessionInfoB = Split(arrSessionsB(iB), ",") 'compare username AND server AND sessionid AND workstation name if arrSessionInfoA(1) = arrSessionInfoB(1) AND _ arrSessionInfoA(0) = arrSessionInfoB(0) AND _ arrSessionInfoA(3) = arrSessionInfoB(3) AND _ arrSessionInfoA(4) = arrSessionInfoB(4) then duplicate = 1 exit do end if iB = iB +1 loop if duplicate = 1 then duplicate = 0 else objTextFile.WriteLine (arrSessionsA(iA)) end if iA = iA + 1loopobjTextFile.CloseI Receive an error on line 54"Set objFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")"Can someone help me?Thx Edited January 11, 2008 by verlegenmanneke
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now