远程搜索AD以获取没有OU的计算机对象

时间:2018-06-13 19:25:51

标签: c# active-directory remote-access

美好的一天,

我被要求写出一些代码来找到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进入我所遇到的每一个深处,直到找到指定的主机名。我不确定如何解决这个问题。任何帮助将不胜感激。

1 个答案:

答案 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();