我希望能够从Active Directory中制作一些简单的报告。在讨论等过程中,我发现如果使用.NET FW 3.5及以上版本,则适合使用
PrincipalContext
。我想了解原理以及使用这个新功能可以做什么(与DirectoryEntry
不同)。
代码框架
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain,
"YOURDOMAIN", "OU=SomeOU,DC=YourCompany,DC=com");
// define a "query-by-example" principal - here, we search for a UserPrincipal
// which has a password that will expire in 3 days or less
UserPrincipal userTemplate = new UserPrincipal(ctx);
userTemplate.AdvancedSearchFilter.AccountExpirationDate(DateTime.Today.AddDays(3), MatchType.LessThanOrEquals);
// instantiate searcher
PrincipalSearcher searcher = new PrincipalSearcher(userTemplate);
// enumerate matching users
foreach (Principal foundPrincipal in searcher.FindAll())
{
UserPrincipal foundUser = (foundPrincipal as UserPrincipal);
if (foundUser != null)
{
// do something with users found - e.g. send e-mail
}
}
是否可以在代码中添加以下LDAP登录属性:
- 使用的LDAP版本(2或3)
- 如何设置LDAP运行的端口
- 如果需要SSL连接,如何处理?(不同的端口,必须满足特殊要求)
此外,我可以通过AdvancedSearchFilter
实现以下条件吗?
(我只找到了AccountExpirationDate
和AccountLockoutDate
)
- 用户密码将在不久的将来过期
- 用户密码已过期
- 检查用户的密码是否可以过期
- 用户帐户过期(帐户,无需密码)
- 过期的用户帐户(帐户,无需密码)
- 用户帐户未过期
System.DirectoryServices.AccountManagement
中的新功能(并且回答了很多你的问题,我相信)。 - marc_s