'========================================================================= ' ListLoggedOnUsers.vbs ' VERSION: 1.0 ' AUTHOR: Brian Steinmeyer ' EMAIL: [email protected] ' WEB: https://sigkillit.com ' DATE: 1/1/2011 ' COMMENTS: Pass a Computer Name or IP to the Function and it will return ' the name computer name, # logged on users, and username of the logged on ' users. This works for local, remote, and RDP sessions. ' EXAMPLE: Wscript.Echo ListCurrentLoggedOn("computer") ' Wscript.Echo ListCurrentLoggedOn("192.168.1.100") '========================================================================= Option Explicit Wscript.Echo ListLoggedOnUsers("computer") Private Function ListLoggedOnUsers(strComputer) On Error Resume Next ' Determine Logged On Users By Owner of Explorer.exe Process Dim objWMIService: Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Dim colProcess: Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name='explorer.exe'") Dim objProcess, colProperties, strUser, strDomain, strResult If colProcess.Count = 0 Then strResult = "Computer:" & strComputer & vbTab & "Count:" & colProcess.Count & vbTab & "User:N/A" Else Dim i: i = 1 For Each objProcess in colProcess colProperties = objProcess.GetOwner(strUser,strDomain) strResult = strResult & "Computer:" & strComputer & vbTab & "Count:" & i & vbTab & "User:" & strDomain & "\" & strUser & vbCrLf i = i + 1 Next End If 'Check For Errors If Err.Number <> 0 Then Err.Clear strResult = "Computer:" & strComputer & vbTab & "Count:!~ERROR~!" & vbTab & "User:!~ERROR~!" End If 'Cleanup Set objWMIService = Nothing Set colProcess = Nothing 'Return Result ListLoggedOnUsers = strResult On Error Goto 0 End Function