मैं जानता हूँ कि इस सूत्र एक छोटे से पुराना है, लेकिन मैं हाल ही में की तुलना में DirectorySearcher प्रदान करता है DirectoryEntries के माध्यम से चालों की एक अधिक कुशल तरीका बनाया है और साझा करने के लिए के बाद से इस गूगल पर शीर्ष परिणाम था चाहता था। यह उदाहरण प्रारंभिक निर्दिष्ट प्रारंभ बिंदु के आधार पर ओयू संरचना को दोहराता है।
डीएन पथ पहले निर्माता के लिए पारित किया प्रारूप "LDAP: // OU = StartingOU, डीसी = परीक्षण, डीसी = कॉम" में होना चाहिए
using System.DirectoryServices;
using System.Threading.Tasks;
public class ADTree
{
DirectoryEntry rootOU = null;
string rootDN = string.Empty;
List<ADTree> childOUs = new List<ADTree>();
public DirectoryEntry RootOU
{
get { return rootOU; }
set { rootOU = value; }
}
public string RootDN
{
get { return rootDN; }
set { rootDN = value; }
}
public List<ADTree> ChildOUs
{
get { return childOUs; }
set { childOUs = value; }
}
public ADTree(string dn)
{
RootOU = new DirectoryEntry(dn);
RootDN = dn;
BuildADTree().Wait();
}
public ADTree(DirectoryEntry root)
{
RootOU = root;
RootDN = root.Path;
BuildADTree().Wait();
}
private Task BuildADTree()
{
return Task.Factory.StartNew(() =>
{
object locker = new object();
Parallel.ForEach(RootOU.Children.Cast<DirectoryEntry>().AsEnumerable(), child =>
{
if (child.SchemaClassname.Equals("organizationalUnit"))
{
ADTree ChildTree = new ADTree(child);
lock (locker)
{
ChildOUs.Add(ChildTree);
}
}
});
});
}
}
निर्माण करने के लिए, तुम सब करने की जरूरत है निम्नलिखित:
ADTree Root = null;
Task BuildOUStructure = Task.Factory.StartNew(() =>
{
ADTree = new ADTree("LDAP://ou=test,dc=lab,dc=net");
});
BuildOUStructure.Wait();
स्रोत
2015-01-14 21:47:26
आप कोड एक्सएमएल या डेटा के नमूने पोस्ट करते हैं तो ** कृपया ** उन पंक्तियों पर प्रकाश डाला मैं n पाठ संपादक और संपादक टूलबार पर "कोड नमूने" बटन ('{}') पर क्लिक करें ताकि इसे अच्छी तरह प्रारूपित किया जा सके और इसे हाइलाइट किया जा सके! –