我正在使用DirectorySearcher
在Active Directory中发出LDAP请求,但由于筛选器无效,我一直在抛出ArgumentException
。很可能是因为Active Directory中的accountExpires
属性的错误形式。我想使用LDAP查找所有过期的帐户,但是如何将DateTime.Now
转换为accountExpires
格式?这是我所做的,它引发了一个例外。如果我拿出accountExpires属性,它不会产生任何问题:无效搜索在Active Directory中筛选
search.Filter = "(&(objectCategory=person)"+
"(!(objectClass=contact))"+
"(accountExpires>0)"+
"(accountExpires<=129383640000000000)"+
")";
我真的不知道该怎么日期转换为accountExpires
格式,我相信来自一个错误的日期格式的问题。
任何想法?
“我真的不知道该怎么日期转换为accountExpires格式”:accountExpires是一个Windows文件时间:你可以转换到/自日期时间使用'DateTime.ToFileTimeUtc' /'DateTime.FromFileTimeUtc' – Joe
'accountExpires'条件是否仅过滤具有展期日期的帐户?如果是,这种情况是否有效? : '(!(|(accountExpires = 0x7FFFFFFFFFFFFFFF)(accountExpires = 0)))'(根据http://ldapwiki.com/wiki/AccountExpires) – Esteban
@Esteban这有效,但它并没有给我所有的结果我需要(15个中只有一个)。但没有例外 –