Ldap/ADSI|Script/Query to find out last logged on computer

Posted on 2006-07-10
Last Modified: 2012-06-27
Hi there,
I'm a systems administrator and my company has various sites across UK. Sometimes users have to travel between sites and often save their data on the C drive of the desktop. All sites are under on domain. I'm fairly new to this but is there is a way I can find out what computer a particular user logged on on a particular day. I mean is there any way we can query Active Direcory to find this out. ? I need to know the computer name the user logged on to .

Question by:gtrivedi
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2

Expert Comment

ID: 17072555

The user's last logon time can be stored in AD (See an article here: I am not a 100% sure but think you can extract the last time a particular machine accessed the networkas well, but I don't believe the the two are connected in any way within AD. Also, only the last log entry is stored unless you have setup Auditing Policies to track it. (IMO) The best way to track what you want is to incorporate you own logging into a logon script. You can control where and what information is tracked. If you would like help putting together a script let me know and I'll see what I can put together for you.


Author Comment

ID: 17072825
Hi Krompton,

Thats what I thought. The login script can come handy. Now where will you put the login script ? (So that I can track which user logged on to which computer)
The idea is that I have the NT username and want to find the last logged on computer. If you can give me a script that would be wonderful.


Accepted Solution

Krompton earned 500 total points
ID: 17073718

Below is an example. Save it as a .vbs file to your NetLogon directory. I would then assign it as a logon script in a new or existing GPO after testing.

Good Luck,

Option Explicit
On Error Resume Next
Dim WshNetwork, WshShell, LogFile, oFS, strCPUName, strUserName, objFileSystem, objOutputFile

Const Read = 1
Const Write = 2
Const Append = 8

Set WshShell = WScript.CreateObject("WScript.Shell")
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")

LogFile = "\\Server\Share\Test.log" 'Input your info

Set WshNetwork = WScript.CreateObject("WScript.Network")
strCPUName = WshNetwork.ComputerName
strUserName = ""
'Make sure username loaded
While strUserName = ""
WScript.Sleep 100
strUserName = WshNetwork.UserName

'Open your log, enter info and close file
OpenFile LogFile, Write'Append
objOutputFile.WriteLine strUserName & " " & "logged on at: (" & Now & ") from: (" & strCPUName & ")"


'Open a file
Public Function OpenFile(FileToOpen, AccessType)'
      set objFileSystem = CreateObject("Scripting.FileSystemObject")
      set objOutputFile = objFileSystem.OpenTextFile(FileToOpen, AccessType, True)
End Function
Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

LVL 13

Expert Comment

ID: 17074524
i would use simpler batch file :

echo ************ >>\\server\share$\log.txt
echo %username% >>\\server\share$\log.txt
echo %computername% >>\\server\share$\log.txt
echo %time% >>\\server\share$\log.txt
echo %date% >>\\server\share$\log.txt
echo ************ >> \\server\share$\log.txt

put the lines in common login script and replace \\server\share$
with your server name and share that you will create (don't forget write access to everyone)

Author Comment

ID: 17079631
Thanks Krompton and Haim96. Both script works fine. And I can search for the username and and find the computer name used by the user last. Great stuff!

Expert Comment

ID: 17080566

Good Batch file and you can do quite a bit with them. Scripting does have much more versitility though and I encourage anyone to learn a scripting language when they administrate a network (VB, Java, Kix or whatever) but as your example shows you don't want to ignore the batch file either.


As I mentioned, I highly encourage network admins to learn scripting especially VB when you are running a windows AD network. Haim96 does make a good point though that some things are simpler with batch files; I myself have quite a store of them and have no intention of getting rid of them until they no longer function on the prevailing OS of the time. Of course I've been using them since DOS3.0 days in the 80's so who knows when they'll become obsolete. :) And thanks for the points.

Cheers all,
LVL 13

Expert Comment

ID: 17082416
thanks gtrivedi and Krompton   :)
i know how to script VBS and WMI too but if we can keep it simple so whay not ?


Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I. Introduction There's an interesting discussion going on now in an Experts Exchange Group — Attachments with no extension ( This reminded me of questions tha…
#Citrix #POC #XenDesktop #vCenter #VMware #ESX
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question