Active Directory - 获取用户和组、特定组的成员

sqlserver

1个回答

写回答

jieJoel

2025-06-21 21:05

+ 关注

微软
微软

使用Active Directory(AD)可以轻松地获取用户和组的信息,以及特定组的成员信息。AD是一种由微软提供的目录服务,用于管理网络中的用户、计算机和其他资源。它提供了一个集中的数据库,可以存储和组织网络中的对象,并为用户提供方便的访问和管理权限。

获取用户信息

要获取AD中的用户信息,可以使用LDAP(轻量级目录访问协议)查询来搜索用户对象。LDAP是一种用于访问AD的协议,可以通过属性和过滤器来精确地搜索所需的用户。

下面是一个示例代码,演示如何使用C#从AD中获取用户信息:

csharp

using System;

using System.DirectoryServices;

class Program

{

static void MAIn()

{

DirectoryEntry entry = new DirectoryEntry("LDAP://DC=example,DC=com"); // 替换为你的AD域名

DirectorySearcher searcher = new DirectorySearcher(entry);

searcher.Filter = "(objecTCLass=user)";

searcher.PropertiesToLoad.Add("displayName");

searcher.PropertiesToLoad.Add("mAIl");

SearchResultCollection results = searcher.FindAll();

foreach (SearchResult result in results)

{

string displayName = result.Properties["displayName"][0].ToString();

string emAIl = result.Properties["mAIl"][0].ToString();

Console.WriteLine("用户姓名: " + displayName);

Console.WriteLine("电子邮件: " + emAIl);

Console.WriteLine();

}

}

}

上述代码首先创建一个DirectoryEntry对象,用于连接到AD。然后,创建一个DirectorySearcher对象,并设置过滤条件为"(objecTCLass=user)",表示只搜索用户对象。接下来,通过添加要加载的属性,如displayNamemAIl,来指定我们要获取的用户信息。最后,调用FindAll方法执行搜索,并遍历搜索结果以获取每个用户的信息。

获取组信息

获取AD中的组信息与获取用户信息类似,也是使用LDAP查询来搜索组对象。下面是一个示例代码,演示如何使用C#从AD中获取组信息:

csharp

using System;

using System.DirectoryServices;

class Program

{

static void MAIn()

{

DirectoryEntry entry = new DirectoryEntry("LDAP://DC=example,DC=com"); // 替换为你的AD域名

DirectorySearcher searcher = new DirectorySearcher(entry);

searcher.Filter = "(objecTCLass=group)";

searcher.PropertiesToLoad.Add("cn");

searcher.PropertiesToLoad.Add("description");

SearchResultCollection results = searcher.FindAll();

foreach (SearchResult result in results)

{

string groupName = result.Properties["cn"][0].ToString();

string description = result.Properties["description"][0].ToString();

Console.WriteLine("组名: " + groupName);

Console.WriteLine("描述: " + description);

Console.WriteLine();

}

}

}

上述代码与获取用户信息的代码类似,只是将过滤条件改为"(objecTCLass=group)",表示只搜索组对象。同样,通过添加要加载的属性,如cndescription,来指定我们要获取的组信息。遍历搜索结果并输出每个组的信息。

获取特定组的成员

要获取特定组的成员信息,可以使用组对象的Members属性。下面是一个示例代码,演示如何使用C#从AD中获取特定组的成员信息:

csharp

using System;

using System.DirectoryServices;

class Program

{

static void MAIn()

{

DirectoryEntry entry = new DirectoryEntry("LDAP://DC=example,DC=com"); // 替换为你的AD域名

DirectorySearcher searcher = new DirectorySearcher(entry);

searcher.Filter = "(cn=GroupName)"; // 替换为你要获取成员的组名

searcher.PropertiesToLoad.Add("member");

SearchResult result = searcher.FindOne();

if (result != null)

{

foreach (string member in result.Properties["member"])

{

Console.WriteLine("成员: " + member);

}

}

}

}

上述代码首先创建一个DirectoryEntry对象,用于连接到AD。然后,创建一个DirectorySearcher对象,并设置过滤条件为要获取成员的组名,如"(cn=GroupName)"。通过添加要加载的属性,如member,来指定我们要获取的成员信息。调用FindOne方法执行搜索,并遍历结果的member属性以获取每个成员的信息。

通过上述代码示例,我们可以轻松地使用Active Directory获取用户和组的信息,以及特定组的成员信息。这些信息对于管理和维护网络中的用户和组非常有用,可以帮助我们更好地管理网络资源和权限。无论是获取用户信息、组信息还是特定组的成员信息,都可以通过简单的代码实现,使我们能够快速而准确地获取所需的信息。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号