3

我想从 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

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

1 回答 1

0

这么晚才回复很抱歉。我找到了这两个链接的解决方案,其中描述了所有信息。就像它只需要结合上面的代码一样。

检索域密码策略中“最小密码长度”的值

House of Derek - 密码过期电子邮件实用程序

于 2013-02-07T16:54:39.720 回答