Directorysearcher 如何使用目录搜索器从主active directory获取子active directory列表?
假设我有三个活动目录Directorysearcher 如何使用目录搜索器从主active directory获取子active directory列表?,directorysearcher,Directorysearcher,假设我有三个活动目录D1,D2,D3 D2 is group member of D1. D3 is group member of D2. 所以,如果我想得到D1的组成员列表,结果应该是D2,而不是D2和D3 如何做到这一点?将哈希表变量定义为全局变量。 哈希表searchedGroups=null strGroupDN是主目录列表名 private ArrayList getsubDL(string strGroupDN) { ArrayList
D1
,D2
,D3
D2 is group member of D1.
D3 is group member of D2.
所以,如果我想得到D1
的组成员列表,结果应该是D2
,而不是D2
和D3
如何做到这一点?将哈希表变量定义为全局变量。 哈希表searchedGroups=null strGroupDN是主目录列表名
private ArrayList getsubDL(string strGroupDN)
{
ArrayList allSubDL = new ArrayList();
searchedGroups.Add(strGroupDN, strGroupDN);
// get nested groups
ArrayList Nestedgroups = new ArrayList();
// find all nested groups in this group
DirectorySearcher ds = new DirectorySearcher();
ds.Filter = String.Format
("(&(memberOf={0})(objectClass=group))", strGroupDN);
foreach (SearchResult sr in ds.FindAll())
{
string grnm = sr.Properties["distinguishedName"][0].ToString();
string grnsamn = sr.Properties["sAMAccountName"][0].ToString();
Nestedgroups.Add(sr.Properties["distinguishedName"][0].ToString());
}
allSubDL.AddRange(Nestedgroups);
return allSubDL;
}
public ArrayList GetsubDLList(string strGroupName)
{
ArrayList allSubDL = new ArrayList();
searchedGroups = new Hashtable();
// find group
DirectorySearcher search = new DirectorySearcher();
search.Filter = String.Format
("(&(objectCategory=group)(cn={0}))", strGroupName);
search.PropertiesToLoad.Add("distinguishedName");
SearchResult sru = null;
DirectoryEntry group;
try
{
sru = search.FindOne();
}
catch (Exception ex)
{
throw ex;
}
group = sru.GetDirectoryEntry();
allSubDL = getsubDL(group.Properties["distinguishedName"].Value.ToString());
return allSubDL;
}
allSubDL将为您提供子目录列表的详细信息