LastLogon Active Directory
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 :
Citation:
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:
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 ?