I used this 2 or 3 years ago, it worked, was a little slow though.
' List last logio times
'
On Error Resume Next
OutFileName = "Logons.txt"
sEnterDCs = "DC1,DC2,DC3" 'comma seperated list of Domain Controllers
sObjects = Split(sEnterDCs, ",")
Set oDomain = GetObject("WinNT://" & sObjects(0))
oDomain.Filter = Array("User")
WScript.Echo "Showing last login times of accounts from: " & oDomain.Name &
vbNewLine
For Each oDomainItem In oDomain
sUsrLogin = oDomainItem.LastLogin
If UBound(sObjects) >= 1 Then
For ii = 1 To UBound(sObjects)
Set oUsr = GetObject("WinNT://" & sObjects(ii) & "/" &
oDomainItem.Name & ",user")
If oUsr.LastLogin > sUsrLogin Then sUsrLogin = oUsr.LastLogin
Next
End If
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set outFile = FileSystem.OpenTextFile(OutFileName,8,-2)
'outFile.Write vbCrLf &
"---------------------------------------------------------------------------------"
& vbCrLf
'OutFile.write "Username: " & Left(oDomainItem.Name & Space(22),22) &
"Last login: " & FormatDateTime(sUsrLogin) & vbCrLf
OutFile.write oDomainItem.Name & vbTab & FormatDateTime(sUsrLogin) &
vbCrLf
'WScript.Echo "Username: " & Left(oDomainItem.Name & Space(22),22) & "Last
login: " & FormatDateTime(sUsrLogin)
Next
OutFile.close
Regards
Mark Dormer