On Error Resume Next 'Input domain's distinguishedname DomainDN = "dc=ldap389,dc=info" Const ForAppending = 8 Const ADS_SCOPE_SUBTREE = 2 'We search for objects stale since 6 months dtmDateValue = DateAdd("m", -6, now) Set objShell = CreateObject("Wscript.Shell") lngBiasKey = objShell.RegRead("HKLMSystemCurrentControlSetControl" _ & "TimeZoneInformationActiveTimeBias") If (UCase(TypeName(lngBiasKey)) = "LONG") Then lngBias = lngBiasKey ElseIf (UCase(TypeName(lngBiasKey)) = "VARIANT()") Then lngBias = 0 For k = 0 To UBound(lngBiasKey) lngBias = lngBias + (lngBiasKey(k) * 256^k) Next End If ' Convert datetime value to UTC. dtmAdjusted = DateAdd("n", lngBias, dtmDateValue) ' Find number of seconds since 1/1/1601. lngSeconds = DateDiff("s", #1/1/1601#, dtmAdjusted) ' Convert the number of seconds to a string ' and convert to 100-nanosecond intervals. str64Bit = CStr(lngSeconds) & "0000000" Set fso = CreateObject("Scripting.FileSystemObject") CibleFileOU = "Resultsusers.csv" CibleFileOU2 = "Resultscpu.csv" Set df3 = fso.OpenTextFile(CibleFileOU,ForAppending,True) Set df4 = fso.OpenTextFile(CibleFileOU2,ForAppending,True) Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText =_ "SELECT DistinguishedName,sAMAccountName,lastLogonTimestamp FROM 'LDAP://"&DomainDN&"' WHERE objectCategory='user' AND lastLogonTimestamp < '"&str64Bit&"'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF disting = objRecordSet.Fields("DistinguishedName").Value SAM = objRecordSet.Fields("sAMAccountName").Value Set StrFlagMCP = objRecordSet.Fields("lastLogonTimestamp").Value intLastLogonTime0 = StrFlagMCP.HighPart * (2^32) + StrFlagMCP.LowPart intLastLogonTime0 = intLastLogonTime0 / (60 * 10000000) intLastLogonTime0 = intLastLogonTime0 / 1440 'Convert lastlogontimestamp in date format StrFlagPwd = intLastLogonTime0 + #1/1/1601# df3.writeline(SAM&";"&StrFlagPwd&";"&disting) objRecordSet.MoveNext Loop objCommand.CommandText =_ "SELECT DistinguishedName,sAMAccountName,lastLogonTimestamp,WhenCreated FROM 'LDAP://"&DomainDN&"' WHERE objectCategory='user' AND NOT lastLogonTimestamp = '*'" Set objRecordSet2 = objCommand.Execute objRecordSet2.MoveFirst Do Until objRecordSet2.EOF disting = objRecordSet2.Fields("DistinguishedName").Value SAM = objRecordSet2.Fields("sAMAccountName").Value LastLOG = objRecordSet2.Fields("lastLogonTimestamp").Value Whencreate = objRecordSet2.Fields("WhenCreated").Value df3.writeline(SAM&";NEVER LOGGED;"&disting&";"&Whencreate) objRecordSet2.MoveNext Loop objCommand.CommandText =_ "SELECT DistinguishedName,sAMAccountName,lastLogonTimestamp FROM 'LDAP://"&DomainDN&"' WHERE objectCategory='computer' AND PwdLastSet < '"&str64Bit&"'" Set objRecordSet3 = objCommand.Execute objRecordSet3.MoveFirst Do Until objRecordSet3.EOF disting = objRecordSet3.Fields("DistinguishedName").Value SAM = objRecordSet3.Fields("sAMAccountName").Value set StrFlagMCP = objRecordSet3.Fields("lastLogonTimestamp").Value intLastLogonTime0 = StrFlagMCP.HighPart * (2^32) + StrFlagMCP.LowPart intLastLogonTime0 = intLastLogonTime0 / (60 * 10000000) intLastLogonTime0 = intLastLogonTime0 / 1440 StrFlagPwd = intLastLogonTime0 + #1/1/1601# df4.writeline(SAM&";"&StrFlagPwd&";"&disting) objRecordSet3.MoveNext Loop df3.close df4.close msgbox "done!