我想从 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
)
- 用户密码将在不久的将来到期
- 用户密码已过期
- 检查用户的密码是否可以过期
- 用户帐户过期(帐户,无密码)
- 过期用户帐户(帐户,无密码)
- 用户帐户未过期