How can I use VB scripting with WMI to get the # of logged in users. My installation can only have one user logged in and needs to report an error if more than one user is logged in (via terminal service using Citrix). I don't know that much about Citrix but the Win32_LogonSession
with LogonType = 10
seems to return all kinds of junk (ports sessions, etc.). I just need the users...are there any WMI calls that I can just get the # of users logged into Citrix? Below is a snip of my VB code:
Set objWMIService = _
GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colComputer = _
objWMIService.ExecQuery("Select * from Win32_LogonSession Where LogonType = 10")
Thanks! -jp
The following code should help you out (use strComputer="."
for local computer or strComputer="MachineName"
):
strComputer = "."
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colSessions = objWMI.ExecQuery _
("Select * from Win32_LogonSession Where LogonType = 10")
If colSessions.Count = 0 Then
Wscript.Echo "No interactive users found"
Else
WScript.Echo "RDP Sessions:"
For Each objSession in colSessions
Set colList = objWMI.ExecQuery("Associators of " _
& "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _
& "Where AssocClass=Win32_LoggedOnUser Role=Dependent" )
For Each objItem in colList
WScript.Echo "Username: " & objItem.Name & " FullName: " & objItem.FullName
Next
Next
End If
The original code is here:
How to show logged on users? (Tek-Tips Forums)
This did work with Windows 2003, I can't make any guarantees about later version.