美好的一天,
我被要求写出一些代码来找到AD中的计算机对象我还没有得到这些对象可以使用的OU(这根本没有帮助 - 明显)。我已经确定我可以使用以下行远程连接到AD服务器:
DirectoryEntry startingPoint = new DirectoryEntry("LDAP://DC=Zone,DC=Corp,DC=COM", "UserName", "Password");
//Find all OUs
DirectorySearcher searcher = new DirectorySearcher(startingPoint);
searcher.Filter = "(objectCategory=Computer)";
foreach (SearchResult result in searcher.FindAll())
{
}
不幸的是,我所拥有的唯一信息是所有对象都不会超过3 OU的深度。因此,我想知道如何通过每一个OU进入我所遇到的每一个深处,直到找到指定的主机名。我不确定如何解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:0)
首先,我会将SearchScope
更改为Subtree
,然后将主机名包含在过滤器中。然后我会使用FindOne()
代替FindAll()
:
DirectoryEntry startingPoint = new DirectoryEntry("LDAP://DC=Zone,DC=Corp,DC=COM", "UserName", "Password");
DirectorySearcher searcher = new DirectorySearcher(startingPoint)
{
SearchScope = SearchScope.Subtree,
Filter = $"(&(objectCategory=Computer)(cn={hostname}))"
};
SearchResult result = searcher.FindOne();