如何使用c#使用DomainName获取AD中的OU名称列表?
我想从Active Directory获取OU列表。
我只有域名。
我怎样才能用c#实现这个目标?
尝试这样的事情:
// connect to "RootDSE" to find default naming context DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE"); string defaultContext = rootDSE.Properties["defaultNamingContext"][0].ToString(); // bind to default naming context - if you *know* where you want to bind to - // you can just use that information right away DirectoryEntry domainRoot = new DirectoryEntry("LDAP://" + defaultContext); // set up directory searcher based on default naming context entry DirectorySearcher ouSearcher = new DirectorySearcher(domainRoot); // SearchScope: OneLevel = only immediate subordinates (top-level OUs); // subtree = all OU's in the whole domain (can take **LONG** time!) ouSearcher.SearchScope = SearchScope.OneLevel; // ouSearcher.SearchScope = SearchScope.Subtree; // define properties to load - here I just get the "OU" attribute, the name of the OU ouSearcher.PropertiesToLoad.Add("ou"); // define filter - only select organizational units ouSearcher.Filter = "(objectCategory=organizationalUnit)"; // do search and iterate over results foreach (SearchResult deResult in ouSearcher.FindAll()) { string ouName = deResult.Properties["ou"][0].ToString(); }
如果你有一个域名(例如mycompany.com
),那么LDAP根域通常会被称为dc=mycompany,dc=com
– 这是一个约定,但它不一定是这样。 这就是我连接到LDAP://RootDSE
虚拟LDAP根目录的原因,我读出了属性Default Naming Context
,它给出了默认的LDAP路径。
如果您知道要连接的位置 – 可以跳过第一步并提供有效的LDAP路径(例如LDAP://dc=YourCompany,dc=co,dc=jp
或其他)以创建domainRoot
目录条目。
在项目中添加对System.DirectoryServices的引用
public static List ListOu() { List ous = new List (); using (DirectoryEntry root = new DirectoryEntry("LDAP://dc=DOMAIN,dc=COM")) { DirectorySearcher searcher = new DirectorySearcher(root); searcher.Filter = "(&(objectClass=organizationalUnit))"; searcher.SearchScope = SearchScope.Subtree; searcher.PropertiesToLoad.Add("distinguishedName"); var result = searcher.FindAll(); foreach (SearchResult entry in result) { ous.Add(entry.GetDirectoryEntry().Properties["distinguishedName"].Value.ToString()); } result.Dispose(); searcher.Dispose(); } return ous; }
- GroupPrincipal.GetMembers在组(或子组,如果递归)包含ForeignSecurityPrincipal时失败
- 在C#中,如何访问Active Directory以获取某个用户所属的组列表?
- 在Active Directory中,如何确定ActiveDirectoryAccessRule的类型?
- 如何在Active Directory中获取/更新“联系人”?
- Active Directory中联机的计算机列表
- 使用Novell.Directory.Ldap.NETStandard库进行C#netcore ldap身份validation
- 喜欢在ActiveDirectory中搜索
- 读取本地组策略/ Active Directory设置
- 使用c#删除活动目录中的用户