REM John Pfeiffer 24oct07   VBS script to get last logon time and display (human form)
REM note that microsoft starts their clock at UT Jan 01, 1601 and measures every 100 ns
REM Original scripts from http://www.visualbasicscript.com/m_2327/mpage_1/key_/tm.htm
REM http://www.microsoft.com/technet/scriptcenter/topics/win2003/lastlogon.mspx
REM On Error Resume Next         REM continues even if a command returns an error
Set objUser = GetObject("LDAP://cn=administrator,cn=users,dc=williamscollege,dc=local")
Set objLastLogon = objUser.Get("lastLogon")
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart 
intLastLogonTime = intLastLogonTime / (60 * 10000000)   REM 60 secs * 10,000,000 nanosecs per sec
intLastLogonTime = intLastLogonTime / 1440              REM 1440 mins per 24hr day
Wscript.Echo "Last logon time: " & intLastLogonTime + #1/1/1601#
REM It's off by an hour for people in London
REM Because the above didn't always work for me I instead used a hack
REM csvde -r objectclass=user -l lastlogon -f lastlogons.txt
REM unfortunately lastlogonTimeStamp & lastlogoff aren't recorded properly
REM intLastLogonTime = 128369361417343750       REM lastlogontimestamp administrator 15oct07?!?!?!
intLastLogonTime  = 128377034514062500          REM lastlogon administrator 24oct07 (better!)
intLastLogonTime = intLastLogonTime / (60 * 10000000)   REM 60 secs * 10,000,000 nanosecs per sec
intLastLogonTime = intLastLogonTime / 1440              REM 1440 mins per 24hr day
Wscript.Echo "Last logon time: " & intLastLogonTime + #1/1/1601#
REM It's off by an hour for people in London