Могу ли я получить доменное имя и имя пользователя, выполнив поиск Active Directoy с помощью C # - PullRequest
0 голосов
/ 14 июля 2009

All

У меня большой список электронных писем пользователей, и мне нужно получить имя пользователя и доменное имя для каждого из них.

В моей организации много доменов, и наши пользователи входят в систему с использованием имен пользователей, которые отличаются от их адресов электронной почты.

Пожалуйста, сообщите, если мы можем написать утилиту C #, которая может искать AD по электронной почте каждого пользователя, или если мы можем сделать это более простым способом.

Ответы [ 2 ]

1 голос
/ 14 июля 2009

Вы на .NET 3.5? Если это так - AD имеет замечательные новые функции в .NET 3.5 - ознакомьтесь с этой статьей Управление принципами безопасности каталогов в .NET 3.5 от Этана Вилански и Джо Каплана.

Одной из больших новых функций является класс "PrincipalSearcher", который должен значительно упростить поиск пользователей и / или групп в AD.

Если вы не можете использовать .NET 3.5, используйте DirectorySearcher и укажите адрес электронной почты в качестве критерия поиска, а затем извлеките имя пользователя (какое? У вас есть разные имена пользователей!):

DirectoryEntry deRoot = new DirectoryEntry("LDAP://cn=Users,dc=yourdomain,dc=com");

DirectorySearcher deSrch = new DirectorySearcher(deRoot);

deSrch.SearchScope = SearchScope.Subtree;

deSrch.PropertiesToLoad.Add("sn");  // surname = family name
deSrch.PropertiesToLoad.Add("givenName");
deSrch.PropertiesToLoad.Add("samAccountName");

deSrch.Filter = string.Format("(&(objectCategory=person)(mail={0}))", emailAddress);

foreach(SearchResult sr in deSrch.FindAll())
{
  // you can access the properties of the search result
  if(sr.Properties["sn"] != null)
  {
     string surname = sr.Properties["sn"][0].ToString();
  }
  // and so on, for all the other properties, too
}

Надеюсь, это поможет!

Марк

1 голос
/ 14 июля 2009

Если все эти данные находятся в AD, то вы, вероятно, можете запросить их, используя LDAP. В этом случае я бы порекомендовал DirectorySearcher , поскольку вы используете .NET.

...