📅  最后修改于: 2023-12-03 15:29:07.767000             🧑  作者: Mango
在.NET中,可以使用DirectorySearcher
类来搜索Active Directory中的对象。该类允许您指定搜索条件并检索匹配这些条件的对象。您可以使用DirectorySearcher
类获取具有特定属性值(如部门、职位、电话号码等)的用户账户信息。在本文中,我们将讨论如何使用.NET DirectorySearcher
获取经理账户名。
在使用DirectorySearcher
类搜索Active Directory之前,您需要安装并配置Active Directory域服务。确保您具备授权和Admin权限,以便访问和搜索Active Directory。您还需要添加System.DirectoryServices
程序集(这是由.NET Framework提供的)以便在代码中使用DirectorySearcher
类。在Visual Studio中,可以通过右键单击项目并选择“添加引用”选项来添加程序集。
以下示例演示如何使用DirectorySearcher
类搜索Active Directory中的用户并获取其经理账户名。
string managerName = "";
//创建DirectoryEntry对象并指定Active Directory域路径
DirectoryEntry myDirectoryEntry = new DirectoryEntry("LDAP://mydomain.com");
//将DirectorySearcher对象附加到DirectoryEntry对象中
DirectorySearcher myDirectorySearcher = new DirectorySearcher(myDirectoryEntry);
//指定过滤条件以仅获取用户账户
myDirectorySearcher.Filter = "(&(objectCategory=person)(objectClass=user))";
//指定要返回的属性,包括经理的账户名称
myDirectorySearcher.PropertiesToLoad.Add("manager");
//执行搜索并获取结果
SearchResultCollection mySearchResultCollection = myDirectorySearcher.FindAll();
//遍历搜索结果并从中提取经理的账户名称
foreach (SearchResult mySearchResult in mySearchResultCollection)
{
try
{
managerName = mySearchResult.Properties["manager"][0].ToString();
}
catch (Exception ex)
{
//处理异常
}
}
//打印经理的账户名
Console.WriteLine("经理的账户名是:" + managerName);
在这个示例中,我们首先创建了一个DirectoryEntry
对象并指定Active Directory域路径。然后,我们将DirectorySearcher
对象附加到DirectoryEntry
对象中。使用Filter
属性,我们指定了一个过滤条件,以确保仅获取用户账户。我们还指定了要返回的属性,包括经理的账户名称。最后,我们执行搜索并遍历搜索结果,从中提取经理的账户名称。
.NET中的DirectorySearcher
类使搜索和检索Active Directory对象变得非常容易和高效。借助该类,您可以轻松地检索具有特定属性值的用户账户信息,例如经理账户名称。在本文中,我们提供了一个示例,演示了如何使用.NET DirectorySearcher
获取经理账户名。