【问题标题】:PrincipalContext for query in Active DirectoryActive Directory 中查询的 PrincipalContext
【发布时间】:2013-01-18 21:39:35
【问题描述】:

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

  • 用户密码即将过期
  • 用户密码已过期
  • 检查用户密码是否可以过期
  • 用户帐号过期(帐号,无密码)
  • 已过期的用户帐户(帐户,无密码)
  • 用户帐户未过期

【问题讨论】:

  • 如果您还没有 - 绝对阅读 MSDN 文章 Managing Directory Security Principals in the .NET Framework 3.5,它很好地展示了如何充分利用 System.DirectoryServices.AccountManagement 中的新功能(它回答了您的很多问题,我相信)
  • 您好,感谢文章的链接,我阅读并尝试了除 AD 之外的测试代码,但不幸的是,我仍然处于几乎相同的情况。例如。当我锁定用户帐户时,“IsAccountLockedOut”属性的状态始终为 False,如果我设置帐户到期日期,则永远不会设置 AccountLockoutTime 属性等。此外,在 UserPrincipal 类中,许多其他属性根本不在用户之下。我可能不明白为什么要使用 PrincipalContext 而不是 DirectoryEntry 的哲学。
  • 对不起,我的错。错误会在椅子和键盘之间,我真的没明白原理。一旦我有结果,我会发送正确的答案。

标签: c# active-directory principalcontext


【解决方案1】:

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

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

House of Derek - Password expiration email utility

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2020-03-16
    相关资源
    最近更新 更多