gpt4 book ai didi

c# - 查找组名类似的 Active Directory 组

转载 作者:太空狗 更新时间:2023-10-29 18:28:59 25 4
gpt4 key购买 nike

我需要编写一个 C# 脚本来返回所有组名以特定名称开头的 Active Directory 组。我知道可以使用以下代码返回一组。

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "Groupname");

但是,我想要组名以“GroupPrefix”开头的所有组。然后,我想使用以下代码遍历所有这些组,并将“成员”存储在一个数组/列表中,稍后我可以使用它来进行搜索。

foreach (UserPrincipal p in grp.GetMembers(true))

如果我能得到任何帮助,我将不胜感激。

最佳答案

您可以使用 PrincipalSearcher 和“query-by-example”主体进行搜索:

// create your domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// define a "query-by-example" principal - here, we search for a GroupPrincipal
// and with the name like some pattern
GroupPrincipal qbeGroup = new GroupPrincipal(ctx);
qbeGroup.Name = "GroupPrefix*";

// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeGroup);

// find all matches
foreach(var found in srch.FindAll())
{
// do whatever here - "found" is of type "Principal"
}
}

如果您还没有-绝对阅读 MSDN 文章 Managing Directory Security Principals in the .NET Framework 3.5它很好地展示了如何充分利用 System.DirectoryServices.AccountManagement 中的新功能。或者查看 MSDN documentation on the System.DirectoryServices.AccountManagement命名空间。

当然,根据您的需要,您可能希望在您创建的“按示例查询”组主体上指定其他属性:

  • DisplayName(通常:名字 + 空格 + 姓氏)
  • SAM 帐户名 - 您的 Windows/AD 帐户名

您可以在 GroupPrincipal 上指定任何属性,并将它们用作您的 PrincipalSearcher 的“按示例查询”。

关于c# - 查找组名类似的 Active Directory 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26984022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com