Поиск Active Directory для пользователя с определенным свойством с использованием DirectoryServices.AccountManagement - PullRequest
0 голосов
/ 28 декабря 2011

Я новичок в доступе к Active Directory, и мне посоветовали использовать пространство имен System.DirectoryServices.AccountManagement, но я не знаю, как искать в нем пользователя с определенными инициалами.

Любая помощь?

1 Ответ

1 голос
/ 28 декабря 2011

Вот полный пример с использованием PrincipalSearcher, даже с вашими собственными атрибутами, если хотите (код такой же).

/* Looking for users
 */
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "WM2008R2ENT:389", "dc=dom,dc=fr", "jpb", "root.123");

/* Create a user principal to look for
 */
slxUser aSlxUser = new slxUser(domainContext);
aSlxUser.streetAddress = "The Adress"

/* FindAll
 */
PrincipalSearchResult<Principal> results = new PrincipalSearcher(aSlxUser).FindAll();
  Console.WriteLine(results.Count());

С этим определением для slxUser:

[DirectoryObjectClass("user")]
[DirectoryRdnPrefix("CN")]
class slxUser : UserPrincipal
{
  public slxUser(PrincipalContext context)
    : base(context) { }

  public slxUser(PrincipalContext context, string samAccountName, string password,  bool enabled ) : base(context, samAccountName, password, enabled)
  {
  }

  [DirectoryProperty("streetAddress")]
  public string streetAddress
  {
    get
    {
      object[] result = this.ExtensionGet("streetAddress");
      if (result != null)
      {
        return (string)result[0];
      }
      else
      {
        return null;
      }
    }
    set { this.ExtensionSet("streetAddress", value); }
  }
}
...