如何在 C# 中使用 AD 组名称查找 Active Directory 组电子邮件地址

Posted

技术标签:

【中文标题】如何在 C# 中使用 AD 组名称查找 Active Directory 组电子邮件地址【英文标题】:How to find Active Directory group email address using AD group name in C# 【发布时间】:2021-11-15 13:28:57 【问题描述】:

我有一个名称类似于 Stack Over Flow IT 的 Active Directory 组。需要找到像***it@***.com 这样的广告组电子邮件。无需查找 AD 用户列表。

如何找到广告组邮箱?

或者如何使用广告组邮箱地址查找广告组名称?

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");

我无法使用上述 group 实例代码找到 Active Directory 组电子邮件地址。

【问题讨论】:

如果答案解决了您的问题,请将其标记为已接受的答案。如果它帮助你给它一个upvote。如果答案离题或根本没有帮助,请投反对票或添加评论。另见***.com/help/why-vote 【参考方案1】:

群组邮件

您可以执行以下操作:

PropertyValueCollection email = ((DirectoryEntry) group.GetUnderlyingObject()).Properties["mail"];

如果您有 RSAT 可用,您可以使用以下方法验证您的代码(在 powershell 中):

get-adgroup -Identity "Stack Over Flow IT" -properties mail | select name,mail | sort mail

通过邮件查找组

这是完整性的相反方式:

// replace stuff inside [] to match your environment
DirectoryEntry root = new DirectoryEntry("LDAP://dc=[YOUR DC]", [username], [password], AuthenticationTypes.Secure);

DirectorySearcher groupSearcher = new DirectorySearcher(root);
groupSearcher.Filter = "(mail=***it@***.com)";
groupSearcher.PropertiesToLoad.Add("name");

foreach (SearchResult groupSr in groupSearcher.FindAll())

    ResultPropertyValueCollection groupName = groupSr.Properties["name"];
    // do something with finding


【讨论】:

以上是关于如何在 C# 中使用 AD 组名称查找 Active Directory 组电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

如何使用数据集在 C# 或 dotnet 中查找主键列名称?

使用 DirectorySearcher 在 AD 搜索中包含主要组

如何在 C# 中访问查找所有控件和所有组件到表单中?

如何在 C# 中访问查找所有控件和所有组件到表单中?

通过计算机名称C#AD获取DNS名称

C# 模拟 AD 用户