Home > Scripting, Visual Basic > VB Script to query domain computers for currently logged in users

VB Script to query domain computers for currently logged in users

The script will query domain computers for logged on users on each computer
' The script will query domain computers for logged on users
' on each computer
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2

Set objRoot = GetObject("LDAP://RootDSE")
strDomainName = objRoot.Get("DefaultNamingContext")
Set objRoot = Nothing

strComputer = ""
Dim fso
Dim file

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile ("logged_user_list.txt", 2, True)
Set objShell = CreateObject("WScript.Shell")

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "Select Name, Location from 'LDAP://" & strDomainName & "'" _
& "Where objectClass ='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute

'**********************************************************************************

objRecordSet.MoveFirst

Wscript.Echo "Processing information. This might take several minutes."

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

' Check computer online status by using PING
' and analysing output

    Set objScriptExec = objShell.Exec("%comspec% /c ping.exe -n 1 " & strComputer)
    strPingResults = LCase(objScriptExec.StdOut.ReadAll)

'    If computer responds, connect to WMI

    If InStr(strPingResults, "ttl=") Then
     Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
      
        Set colComputer = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
  
' List logged on users to file and screen

        For Each objComputer in colComputer
             WScript.Echo "Logged-on " &strComputer & " user: " & objComputer.UserName
             file.WriteLine("Logged-on " &strComputer & " user: " & objComputer.UserName)
        Next
        objRecordSet.MoveNext
      
' If computer does not respond then show message and continue to next

    Else
     WScript.Echo(strComputer & ": Not responding...")
        objRecordSet.MoveNext
    End If
Loop
  1. No comments yet.
  1. No trackbacks yet.

Spam Protection by WP-SpamFree