0

Active Directory から OU のリストを取得しようとしています。残念ながら、「myApp」ドメイン コンポーネント内に 2 つの OU があることを知っていても、私の検索は常に結果なしで終了します。

using (var entry = new DirectoryEntry("LDAP://myServer:1111/DC=myApp,DC=myDomain,DC=com", Username, Password)) {
    using (var searcher = new DirectorySearcher()) {
        searcher.SearchRoot = entry;
        searcher.Filter = "(objectCategory=Organizational-Unit)";
        searcher.PropertiesToLoad.Add("name");

        //foo never gets results.  :(
        var foo = searcher.FindAll();
    }
}

以前の StackOverflow questionのコードをたどってみましたが、うまくいきませんでした。

4

3 に答える 3

1

こんなものを使っています。ディクショナリ名のすべての OU をパスで取得し、SearchScope を適切に変更するだけです。

public Dictionary<string, string> GetOUInfo(SearchScope eSearchScope)
    {
        Dictionary<string, string> retValues = new Dictionary<string, string>();

        try
        {
            DirectoryEntry oDirectoryEntry = new DirectoryEntry("LDAP://myServer:1111/DC=myApp,DC=myDomain,DC=com", Username, Password);
            DirectorySearcher oDirectorySearcher = new DirectorySearcher(oDirectoryEntry,
                "(objectCategory=organizationalUnit)", null, eSearchScope);

            SearchResultCollection oSearchResultCollection = oDirectorySearcher.FindAll();
            foreach (SearchResult item in oSearchResultCollection)
            {
                string name = item.Properties["name"][0].ToString();
                string path = item.GetDirectoryEntry().Path;
                retValues.Add(path, name);
            }
        }
        catch (Exception ex)
        {
        }

        return retValues;
    }
于 2014-03-12T17:51:20.380 に答える