Если вы новичок в Active Directory, я предлагаю вам сначала понять, как Active Directory хранит данные.
Active Directory на самом деле является сервером LDAP. Объекты, хранящиеся на сервере LDAP, хранятся иерархически. Это очень похоже на то, как вы храните файлы в файловой системе. Вот почему он получил имя каталога сервера и в Active Directory ,
Контейнеры и объекты в Active Directory могут быть указаны с помощью файла distinguished name. Вот такое выдающееся имя CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com. Как и в случае с традиционной реляционной базой данных, вы можете выполнять запросы к серверу LDAP. Это называется запрос LDAP.
Есть несколько способов выполнить запрос LDAP в .NET. Вы можете использовать DirectorySearcher из System.DirectoryServicesили SearchRequest из System.DirectoryServices.Protocol.
Что касается вашего вопроса, поскольку вы просите конкретно найти объект пользователя-участника, я думаю, что наиболее интуитивно понятным способом является использование PrincipalSearcher из System.DirectoryServices.AccountManagement. Вы можете легко найти много разных примеров в Google. Вот образец, который делает именно то, что вы просите.
using (var context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (var result in searcher.FindAll())
{
DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
Console.WriteLine("First Name: " + de.Properties["givenName"].Value);
Console.WriteLine("Last Name : " + de.Properties["sn"].Value);
Console.WriteLine("SAM account name : " + de.Properties["samAccountName"].Value);
Console.WriteLine("User principal name: " + de.Properties["userPrincipalName"].Value);
Console.WriteLine();
}
}
}
Console.ReadLine();
Обратите внимание, что у пользовательского объекта AD есть несколько атрибутов. В частности, givenNameдаст вам First Nameи snдаст вам Last Name. По поводу имени пользователя. Я думаю, вы имели в виду имя пользователя для входа в систему. Обратите внимание, что на объекте пользователя AD есть два имени для входа. Один из samAccountNameних также известен как имя пользователя для входа в систему до Windows 2000. userPrincipalNameобычно используется после Windows 2000.