我想在 Active Directory 环境中搜索用户GC://DC=xxx,DC=yyy,DC=zzz
格式。但是,如何以编程方式在任意 Active Directory 环境中查找全局编录?每个域名总是对应一个全局目录吗?我可以尝试其他替代方法吗?
注:Forest.FindAllGlobalCatalogs()
返回服务器名称列表,但实际上我无法使用它们进行搜索。
Edit1:这就是我想要做的:假设我的活动目录有一个名为domain1.root.com的域,那么我将使用GC://DC=domain1,DC=root,DC=com来搜索用户。但这总是全局目录吗?每个域都必须有一个全局目录吗?
Edit2:我现在可以使用以下代码搜索用户:
var currentForest = Forest.GetCurrentForest();
var globalCatalog = currentForest.FindGlobalCatalog();
Console.WriteLine(globalCatalog.Name);
//DirectorySearcher searcher = new DirectorySearcher("GC://"+y.Name);
DirectorySearcher searcher = globalCatalog.GetDirectorySearcher();
searcher.Filter = @"samaccountname=skaranth";
Console.WriteLine(searcher.SearchRoot.Path);
var result = searcher.FindOne();
if(result!=null)
Console.WriteLine(result.Properties["distinguishedname"][0]);
searcher.Dispose();
globalCatalog.Dispose();
currentForest.Dispose();
你到底想用这个达到什么目的?
全局编录是存储在某些域控制器上的特殊属性子集。虽然每个域控制器都有该域的一整套属性和对象,但全局目录包含来自 AD 林中所有域的数据。
因此,GC 只有在需要跨多个域查找内容时才会发挥作用。如果您只有一个域,GC 根本不会真正帮助您。
Forest.FindAllGlobalCatalogs()
实际上会为您提供包含全局编录数据集的所有域控制器服务器的列表。那么为什么你不能用它们来搜索呢?你能告诉我们你到目前为止已经尝试过什么吗?
全球目录就是这样 -global- 例如您根本不应该有任何理由想要指定特定的服务器......无论如何,服务器都应该具有相同的数据集。
再说一遍:为什么您觉得需要找到具有全局编录的服务器?一旦获得该信息,您想用它做什么?为什么您觉得在进行全局目录搜索时需要指定服务器?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)