gpt4 book ai didi

C# PrincipalSearcher,返回特定 OU 的 AD 组

转载 作者:太空狗 更新时间:2023-10-30 00:08:19 26 4
gpt4 key购买 nike

我在使用这段代码时遇到了一些困难,尤其是在使用 PrincipalSearcher 时。我正在尝试获取与特定 OU 关联的所有组的列表。

我试图只返回所有组范围下的“安全”组,不包括通讯组。

我遇到的问题是,除了我打算返回的那些之外,它还返回了这些内置组。

帮助服务组Telnet客户端管理员用户嘉宾打印运算符(operator)备份运算符(operator)复制器远程桌面用户网络配置运算符(operator)性能监视器用户性能日志用户分布式 COM 用户域计算机域 Controller 架构管理员企业管理员证书发行商域管理员域用户域 guest 组策略创建者所有者RAS 和 IAS 服务器服务器运营商帐户运算符(operator)Windows 2000 之前的兼容访问即将到来的森林信托 build 者Windows 授权访问组终端服务器许可证服务器Dns管理员Dns更新代理IIS_WPG

我不确定范围是否不正确或者我是否缺少某种过滤。

相关代码段:

    public static ArrayList GetAllGroups()
{
var myItems = new ArrayList();

var ctx = new PrincipalContext(ContextType.Domain,"MyOU");

// define a "query-by-example" principal - here, we search for a GroupPrincipal
var qbeGroup = new GroupPrincipal(ctx);

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

// find all matches
foreach (Principal found in srch.FindAll())
{
var foundGroup = found as GroupPrincipal;

if (foundGroup != null)
{
myItems.Add(foundGroup.Name);
}
}
return myItems;
}

我如何才能排除内置组?

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

两件事:

  1. 没有组关联一个 OU - OU 是一个容器包含用户、计算机、组等。 (就像包含文件的目录)。你是这个意思吗?您想要枚举给定 OU 中包含的组??

  2. 如果是这样:您没有正确调用 PrincipalContext 的构造函数。如果您检查 MSDN documentation on PrincipalContext constructors ,您会看到您正在使用的是带有 ContextTypename 的那个,它代表 domain name您要绑定(bind)到的上下文:

    var ctx = new PrincipalContext(ContextType.Domain,"MyOU");

    这绑定(bind)到 MyOU 域 - 并且它绑定(bind)在该域树的根部。

您可能正在寻找具有三个参数的构造函数 - 一个 ContextType两个字符串 - 第一个是上面的域名,第二个一个是您搜索的起始位置。因此,将您的 PrincipalContext 构造更改为:

var ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN", "OU=MyOU");

然后再次搜索 - 现在您应该只会得到包含OU=MyOU 容器中的组。

关于C# PrincipalSearcher,返回特定 OU 的 AD 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981410/

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