用于在Active Directory中查询的PrincipalContext

时间:2013-01-18 21:39:35

标签: c# active-directory principalcontext

我想从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这个条件吗?
(我发现只有AccountExpirationDateAccountLockoutDate

  • 用户密码将在不久的将来过期
  • 用户密码已过期
  • 检查用户的密码是否可以过期
  • 用户帐户过期(帐户,无密码)
  • 过期的用户帐户(帐户,无密码)
  • 用户帐户未过期

1 个答案:

答案 0 :(得分:0)

抱歉迟到了。解决方案我找到了这两个链接,它描述了所有信息。就像它只需要与上面的代码结合一样。

retrieve the value of "Minimum Password Length" in domain password policy

House of Derek - Password expiration email utility