J'utilise DirectorySearcher
pour faire une requête LDAP dans Active Directory, mais je continue d'avoir un ArgumentException
levé à cause d'un filtre invalide. Probablement à cause d'une mauvaise forme d'attribut accountExpires
d'Active Directory. Je voudrais trouver tous les comptes expirés utilisant LDAP, mais comment puis-je convertir DateTime.Now
au format accountExpires
? C'est ce que j'ai fait et cela soulève une exception. si je prends les accountExpires attribut, il ne crée pas de problème:Filtre de recherche invalide dans Active Directory
search.Filter = "(&(objectCategory=person)"+
"(!(objectClass=contact))"+
"(accountExpires>0)"+
"(accountExpires<=129383640000000000)"+
")";
Je ne sais pas vraiment comment convertir des dates au format accountExpires
, et je crois que le problème vient d'un format de date erronée.
Des idées?
"Je ne sais pas vraiment comment convertir des dates au format accountExpires": accountExpires est un temps de fichiers Windows: vous pouvez convertir en/de DateTime utilisant 'DateTime.ToFileTimeUtc' /' DateTime.FromFileTimeUtc' – Joe
Est-ce que le compteExpires conditionne si seul le filtre doit avoir une date d'expiration? Si c'est le cas, cette condition fonctionne-t-elle? : ( '(! (| AccountExpires = 0x7FFFFFFFFFFFFFFF (accountExpires = 0)))' (Selon http://ldapwiki.com/wiki/AccountExpires) – Esteban
@Esteban Cela fonctionne, mais il ne m'a pas tous les résultats J'ai besoin (seulement un sur 15). Mais pas d'exception –