Option Explicit Dim MaLigne, NouvelleValeur Dim MyDistinguishedName Dim objRootDSE, objItem, objConnection, objCommand, objRecordSet Dim objShell Dim strContainer, strname Dim intCounter Dim objDate, LastLogonDate, lngHigh, lngLow, lngBiasKey, lngBias strContainer = "" 'Si vous souhaitez vous connecter à une OU en particulié, indiquez la ici Const ADS_UF_ACCOUNTDISABLE = 2 Const ADS_SCOPE_SUBTREE = 2 On Error Resume Next Set objRootDSE = GetObject("LDAP://rootDSE") If strContainer = "" Then Set objItem = GetObject("LDAP://" & objRootDSE.Get("defaultNamingContext")) Else Set objItem = GetObject("LDAP://" & strContainer & "," & _ objRootDSE.Get("defaultNamingContext")) End If On Error Goto 0 'strname = objItem.Get("name") 'WScript.Echo "name: " & strname MyDistinguishedName = objItem.Get("distinguishedName") 'Récupération du distinguishedName du domaine par défaut. Exemple DC=Cotonso,DC=Com 'WScript.Echo "distinguishedName: " & MyDistinguishedName Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection objCommand.CommandText = ";(objectCategory=User);name,cn,displayName,sn,mail,mailNickname,sAMAccountName,distinguishedName,lastLogon;subtree" objCommand.Properties("Page Size") = 10000 objCommand.Properties("Timeout") = 30 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.Properties("Cache Results") = False Set objRecordSet = objCommand.Execute 'Affichage des entêtes MaLigne = "Name" & VbTab & "cn" & VbTab & "displayName" & VbTab & "sn" & VbTab & "mail" & VbTab & "mailNickname" & VbTab & "sAMAccountName" & VbTab & "distinguishedName" & VbTab & "lastLogon" Wscript.Echo MaLigne intCounter = 0 Do Until objRecordset.EOF MaLigne = "" 'Traitement des champs que l'on peut lire directement MaLigne = objRecordset.Fields("Name") & VbTab & objRecordset.Fields("cn") & VbTab & objRecordset.Fields("displayName") & VbTab & objRecordset.Fields("sn") & VbTab & objRecordset.Fields("mail") & VbTab & objRecordset.Fields("mailNickname") & VbTab & objRecordset.Fields("sAMAccountName") & VbTab & objRecordset.Fields("distinguishedName") 'Ajout des champs qui demandent un traitement NouvelleValeur = "" ' Convert Integer8 value to date/time in current time zone. On Error Resume Next Set objDate = objRecordset.Fields("lastLogon").Value NouvelleValeur = "Never" If (Err.Number <> 0) Then On Error GoTo 0 LastLogonDate = #1/1/1601# Else On Error GoTo 0 lngHigh = objDate.HighPart lngLow = objDate.LowPart Set objDate = Nothing If (lngLow < 0) Then lngHigh = lngHigh + 1 End If If (lngHigh = 0) And (lngLow = 0) Then LastLogonDate = #1/1/1601# Else LastLogonDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) + lngLow)/600000000 - lngBias)/1440 End If NouvelleValeur = LastLogonDate End If 'On ajouter cette nouvelle valeur à la liste des résultats MaLigne = MaLigne & VbTab & NouvelleValeur 'Affichage Wscript.Echo MaLigne 'On passe au prochain enregistrement objRecordset.MoveNext Loop objConnection.Close