Displaying Active Sessions
This VBScript example runs a query to find the active sessions on an ISA Server computer and then displays the active sessions found. The script includes a single subprocedure, called DisplayActiveSessions.
This example is included as the ActiveSessions.vbs script in the Samples\Admin folder of the ISA Server 2006 Software Development Kit (SDK) and the ISA Server 2004 SDK.
The following procedure lists the steps used to find and display active sessions in the code example that follows.
To find and display active sessions
- Create an instance of the FPC COM object, which provides access to the other ISA Server administration COM objects.
- Declare an FPCArray object, an FPCSessionsMonitor collection, an FPCFilterExpressions collection, and an FPCSessionsMonitorEntry object.
- Get references to the existing FPCArray object and the FPCSessionsMonitor collection.
- Create an FPCFilterExpressions collection.
- Call the ExecuteQuery method to start a query to find the active sessions using the empty FPCFilterExpressions collection.
- In a loop, display the ClientIP property of each FPCSessionsMonitorEntry object representing a session found in the FPCSessionsMonitor collection.
- When all the sessions that existed when the query started have been displayed, call the EndQuery method to stop the query.
The following code can be saved to a .vbs file and run on a computer running ISA Server with the Microsoft Firewall service installed. We recommend running this script from a command prompt using the CScript command.
Sub DisplayActiveSessions() ' Define an enumeration value. Const fpcSessionFound = 0 Const bufferSize = 10000 ' Create the root object. Dim root ' The FPCLib.FPC root object Set root = CreateObject("FPC.Root") ' Declare the other objects needed. Dim isaArray ' An FPCArray object Dim sessionmonitor ' An FPCSessionsMonitor collection Dim filter ' An FPCFilterExpressions collection Dim session ' An FPCSessionsMonitorEntry object ' Get references to the array object and the sessions monitor collection. Set isaArray = root.GetContainingArray() Set sessionmonitor = isaArray.SessionsMonitors.SessionsMonitorFirewall ' Create a filter expressions collection. Set filter = CreateObject("FPC.FPCFilterExpressions") ' Start a query to find the active sessions. sessionmonitor.ExecuteQuery filter, bufferSize WScript.Echo "Finding the active sessions ... Please wait a few seconds." Dim Index Index = 1 On Error Resume Next Do Set session = sessionmonitor.Item(Index) ' An E_PENDING (0x80070002) error is raised when ' the index points beyond the end of the current list of sessions. If Err.Number <> 0 Then WScript.Echo "All existing sessions have been retrieved." Exit Do End If ' An FPCSessionMonitorEntry object can be ' related to various session events. Here we ' are interested only in entries whose Event ' property equals fpcSessionFound, which ' indicates a session that existed when the ' query started. Display the client IP address ' of each session found. If session.Event = fpcSessionFound Then WScript.Echo "Session with: " & session.ClientIP End If Index = Index + 1 Loop Until Err.Number <> 0 Err.Clear ' Stop the query. sessionmonitor.EndQuery WScript.Echo "The query has been stopped." WScript.Echo "Done!" End Sub DisplayActiveSessions