Displaying Active Sessions
This VBScript example runs a query to find the active sessions on a Forefront TMG 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 Forefront TMG Software Development Kit (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 Forefront TMG 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 Forefront TMG 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
Build date: 7/12/2010