Comment lire (et afficher) la propriété Lastlogon ou lastlogoff d'un user depuis [Résolu]

Messages postés
17
Date d'inscription
mardi 20 juillet 2004
Dernière intervention
3 août 2005
- - Dernière réponse : happexamendios
Messages postés
17
Date d'inscription
mardi 20 juillet 2004
Dernière intervention
3 août 2005
- 5 nov. 2004 à 08:23
Bonjour, cela fait quelques heures que je galère pour arriver à récupérer la propriété lastlogon d'un compte user. A chaque fois on me retouorne une erreur de propriété inexistante dans le cache ou des erreurs de typage de valeur.

Je sais que cette propriété existe, mais je n'arrive pas à trouver le moindre exemple susceptible de me dire comment la lire et l'afficher. Est ce que quelqu'un aurait la gentillesse de m'aiguiller là dessus ? merci infiniment
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
17
Date d'inscription
mardi 20 juillet 2004
Dernière intervention
3 août 2005
3
Merci
en fait j'avais bien mon code de bon, mais un petit bug bidon sur ma requête

pour ceux que ça intéresse, voici le code qui est destiné à m'afficher dans une listeview affichée en mode rapport nommée "lstliste" les comptes utilisateurs d'une OU spécifiée s'ils n'ont pas été utilisés depuis 60 jours et s'ils ont été désactivés.

la liste comporte 3 colonnes :
- Nom d'utilisateur
- durée d'inactivité du compte
- compte désactivé ?


Sub Listage_Comptes()
On Error Resume Next

Dim objCon, strQuery, strADSPath, objUser     'Déclaration des variables
Dim itmX As ListItem, Interm As String, Date_Contrôle As String
Dim Ecart_Date

strQuery = "SELECT cn, adspath  FROM 'LDAP://ou=aaa,ou=bbb,ou=ccc,dc=dc,dc=toto,dc=com' WHERE objectclass='User' AND objectcategory='Person'"  'Définition de la requête à exécuter

Set objrecset = objCon.Execute(strQuery)   'Exécution de la requête

Do While Not objrecset.EOF  'Boucle dans le recordset jusqu'à la fin du tableau
    Set objUser = GetObject(objrecset.Fields("adspath").Value)                                              'Connexion à l'objet utilisateur par le biais de son adspath
    Interm = Format(objUser.LastLogin, "dd-mm-yy")    'Récupération de la propriété "lastlogin" et formattage de type "jj-mm-aa"
    Ecart_Date = DateDiff("y", Interm, Date_Contrôle)  'Calcul du nombre de jours entre la dernière connexion et la date du jour
    
    If Ecart_Date >= 60 Then  'Si l'écart de date est supérieur à 60 jours :
        Set itmX = lstListe.ListItems.Add(, , objrecset.Fields("cn").Value)  'Ajoute le common name à la liste
        itmX.SubItems(1) = Interm   'Affichage de la date de dernière connexion dans la seconde colonne
        itmX.SubItems(2) = Ecart_Date & " jours"  'Affichage du nombre de jours sans connexion
        If objUser.AccountDisabled Then itmX.SubItems(3) = "Oui"  'Affiche si le compte est désactivé
    End If
    
    DoEvents  'Accorde du temps au processeur pour les tâches d'arrière plan
    objrecset.movenext  'passe à l'enregistrement suivant
Loop

objCon.Close 'ferme la connexion à l'Active Directory

end sub


Le code est testé et approuvé sur un site comportant environ 600 comptes utilisateurs...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
11 septembre 2008
0
Merci
voici la solution, par contre mon exemple lit les comptes locaux de la machines a toi de modifier le strComputer.

place ce code dans un form et lance le :

Function WMIDateStringToDate(dtmWMIDate)
If Not IsNull(dtmWMIDate) Then
WMIDateStringToDate = CDate(Mid(dtmWMIDate, 5, 2) & "/" & _
Mid(dtmWMIDate, 7, 2) & "/" & Left(dtmWMIDate, 4) _
& " " & Mid(dtmWMIDate, 9, 2) & ":" & _
Mid(dtmWMIDate, 11, 2) & ":" & Mid(dtmWMIDate, _
13, 2))
End If
End Function

Private Sub Form_Load()
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkLoginProfile")
For Each objItem In colItems
If objItem.FullName <> "" Then
MsgBox "Full Name: " & objItem.FullName

dtmWMIDate = objItem.LastLogoff
strReturn = WMIDateStringToDate(dtmWMIDate)
MsgBox "Last Logoff: " & strReturn

dtmWMIDate = objItem.LastLogon
strReturn = WMIDateStringToDate(dtmWMIDate)
MsgBox "Last Logon: " & strReturn

MsgBox "Name: " & objItem.Name

MsgBox "Number Of Logons: " & objItem.NumberOfLogons

End If
Next
End Sub
Messages postés
17
Date d'inscription
mardi 20 juillet 2004
Dernière intervention
3 août 2005
0
Merci
merci, je vais voir si je peux adapter ça pour lister tous les comptes de mon AD dont les lastlogon sont supérieurs à X jours...
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
11 septembre 2008
0
Merci
si la reponse est bonne met la en reponse acceptée

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.