我有一個域本地組是域A在森林A的部分獲得來自域本地組所有成員橫跨多林環境
我想重複這個組中的所有成員。它迭代遍歷所有森林A的域,但不會遍歷域B中森林B中的任何組成員。
從不同森林中開始迭代相同代碼的唯一方法是什麼?
我們嘗試使用System.DirectoryServices.AccountManagement
類,但似乎存在與它們和Windows Server 2012域控制器有關的問題。
private List<User> getUsersInGroup(string groupDN)
{
var users = new List<User>();
using (DirectoryEntry de = new DirectoryEntry("GC://rootDSE"))
{
var rootName = de.Properties["rootDomainNamingContext"].Value.ToString();
using (var userBinding = new DirectoryEntry("GC://" + rootName))
{
using (DirectorySearcher adSearch = new DirectorySearcher(userBinding))
{
adSearch.ReferralChasing = ReferralChasingOption.All;
adSearch.Filter = String.Format("(&(memberOf={0})(objectClass=person))", groupDN);
adSearch.PropertiesToLoad.Add("distinguishedName");
adSearch.PropertiesToLoad.Add("givenname");
adSearch.PropertiesToLoad.Add("samaccountname");
adSearch.PropertiesToLoad.Add("sn");
adSearch.PropertiesToLoad.Add("title");
adSearch.PropertiesToLoad.Add("displayName");
adSearch.PropertiesToLoad.Add("department");
using (var searchResults = adSearch.FindAll())
{
foreach (SearchResult result in searchResults)
{
User u = new User();
u.UserName = result.Properties["samaccountname"][0].ToString();
u.DistinguishedName = result.Properties["distinguishedName"][0].ToString();
if (result.Properties.Contains("title"))
{
u.Title = result.Properties["title"][0].ToString();
}
if (result.Properties.Contains("department"))
{
u.Department = result.Properties["department"][0].ToString();
}
if (result.Properties.Contains("displayName"))
{
u.DisplayName = result.Properties["displayName"][0].ToString();
}
u.DomainName = getDomainFromDN(u.DistinguishedName);
users.Add(u);
}
}
}
}
}
return users;
}
非常感謝您的幫助。
兩點搜索SID:(1)你說:「通過迭代的唯一方法相同的代碼從不同的森林開始?「 - 這是否意味着這種方法適合你?如果確實如此,你不喜歡那種方法? (2)你說過「我們已經嘗試過使用System.DirectoryServices。AccountManagement'類,但是他們和Windows Server 2012域控制器似乎存在問題。「遇到了什麼問題? – Nathan