Bonjour,
Je cherche à récupérer la liste de tous les utilisateurs de mon AD qui ne se sont pas connecter depuis plus de "90" jours.
Pour se faire, je parcours l'ensemble de l'annuaire à la recherche de la propriété "LastLogon". Cela fonctionne bien sauf pour certains utilisateurs...
En effet, mon AD est très vieux et à vécu plusieurs migrations.
Mon problème c'est que avec certains utilisateurs, j'ai un message d'erreur :
Hors cela fonctionne très bien pour les autres...Impossible d'exécuter la requête : L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection. Nom du paramètre : index
Voici mon code :
Quelqu'un aurait-il une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 [...] DirectoryEntry ldap = new DirectoryEntry(ConfigurationSettings.AppSettings["LdapUrl"], ConfigurationSettings.AppSettings["LdapLogin"], ConfigurationSettings.AppSettings["LdapPwd"]); DirectorySearcher searcher = new DirectorySearcher(ldap); searcher.Filter = "(&(objectClass=user)(employeeID=*)(mail=*))"; foreach (string str in adProperties) searcher.PropertiesToLoad.Add(str); SearchResultCollection AdUsers = searcher.FindAll(); foreach (SearchResult result in AdUsers) { int flag = int.Parse(result.Properties["userAccountControl"][0].ToString()); if (!Convert.ToBoolean(flag & 0x0002)) { if (result.Properties["lastLogon"][0] != null && long.Parse(result.Properties["lastLogon"][0].ToString()) > 0) { TimeSpan ts = DateTime.Now - new DateTime(1601, 01, 01).AddTicks((long)result.Properties["lastLogon"][0]); if (ts.Days >= 90) {[...]
Partager