2011-02-28 107 views
0

我有一個代碼來獲取所有計算機名稱存在於doain中,這些名稱不是任何OU的一部分。從活動目錄獲取計算機名稱和OU的

DirectoryEntry entry = new DirectoryEntry("LDAP://" + "Domain Name"); 
     DirectorySearcher mySearcher = new DirectorySearcher(entry); 
     mySearcher.Filter = ("(objectClass=computer)"); 
     mySearcher.SizeLimit = int.MaxValue; 
     mySearcher.PageSize = int.MaxValue; 

     foreach (SearchResult resEnt in mySearcher.FindAll()) 
     { 
      //"CN=SGSVG007DC" 
      string ComputerName = resEnt.GetDirectoryEntry().Name; 
      if (ComputerName.StartsWith("CN=")) 
       ComputerName = ComputerName.Remove(0, "CN=".Length); 
      compList.Add(ComputerName); 
     } 

     mySearcher.Dispose(); 
     entry.Dispose(); 

我想是。隨着這些computernames得到屬於不同OU的域中的計算機名...

任何建議...謝謝

回答

1

你可以嘗試做一個嵌套的for循環。我做了一個小項目,將所有對象添加到TreeView中。這裏是一個片段:

public delegate void Del(TreeNode node); 

    public window_main() 
    { 
     InitializeComponent(); 
     Thread t = new Thread(load_ad); 
     t.Start(); 
    } 

    private void addNode(TreeNode node) 
    { 
     treeViewObjects.Nodes.Add(node); 
    } 
    private void load_ad() 
    { 
     TreeNode root = new TreeNode(directoryEntry.Name.Replace("\\", "")); 
     root.Tag = directoryEntry; 

     Del del = addNode; 
     treeViewObjects.Invoke(del, root); 

     foreach (DirectoryEntry myChildDirectoryEntry in directoryEntry.Children) 
     { 
      TreeNode node = rec(myChildDirectoryEntry); 

      treeViewObjects.Invoke(new Action(() => 
      { 
       root.Nodes.Add(node); 
      })); 
     } 
    } 
    private TreeNode rec(DirectoryEntry dir) 
    { 
     TreeNode node = new TreeNode(dir.Name.Replace("\\", "")); 
     node.Tag = dir; 
     foreach (DirectoryEntry myChildDirectoryEntry in dir.Children) 
     { 
      try 
      { 
       node.Nodes.Add(rec(myChildDirectoryEntry)); 
      } 
      catch 
      { 
       TreeNode nodeChild = new TreeNode(dir.Name.Replace("\\", "")); 
       nodeChild.Tag = myChildDirectoryEntry; 
       node.Nodes.Add(nodeChild); 
      } 
     } 
     return node; 
    } 
+0

它怎麼知道哪個域從機器? – user175084 2011-02-28 23:15:09

+0

有一個名爲directoryEntry的變量(查看load_ad方法),它具有域起點。它是一個用戶組件,您可以從工具箱中拉出或在本地實例化。 – 2011-03-11 20:50:22