Получить адреса электронной почты пользователей из группы Active Directory - PullRequest
2 голосов
/ 26 октября 2010

Эй, Мне нужна простая тестовая программа, которая позволит мне установить имя группы AD (например, testdomain.groupname), и на основе этого имени группы она извлекает мне адреса всех пользователей (включая подгруппы).

Любой фрагмент кода будет высоко оценен.

Спасибо

1 Ответ

2 голосов
/ 26 октября 2010

Если вы используете .NET 3.5 (или вы можете обновить его), вы можете использовать новое пространство имен System.DirectoryServices.AccountManagement, чтобы упростить эту задачу.

Подробнее об этом новом геме .NET 3.5здесь: Управление принципами безопасности каталогов в .NET Framework 3.5

// create a context - you need to supply your 
// domain NetBIOS-style, e.g. "CONTOSO"
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");

// find the group you're interested in
GroupPrincipal gp = GroupPrincipal.FindByIdentity(ctx, "YourGroupName");

// enumerate the members of that group
// the "true" in GetMembers() means: enumerate recursively, e.g.
// if another group is found as member, its members are enumerated
PrincipalSearchResult<Principal> members = gp.GetMembers(true);

// iterate over the principals found
foreach(Principal p in members)
{
    // test to see if it's a UserPrincipal
    UserPrincipal up = (p as UserPrincipal);

    if (up != null)
    {
         // if it is - set the new e-mail address
         up.EmailAddress = "yournewemail@yourdomain.com";
         up.Save();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...