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 :
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
Hors cela fonctionne très bien pour les autres...

Voici mon code :
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)
         {[...]
Quelqu'un aurait-il une idée ?