【问题标题】:Which ActiveDirectory objects can contain computers?哪些 ActiveDirectory 对象可以包含计算机?
【发布时间】:2014-03-05 06:22:12
【问题描述】:

我需要浏览ActiveDirectory 才能选择计算机对象。我发现,有些容器可以包含计算机项,另一个可以包含用户、组策略等。我只想显示包含计算机的容器。所以我使用这段代码来检查容器是否包含任何计算机:

public static bool CheckContainsComputers(DirectoryEntry entry)
{
    using (DirectorySearcher ds =
           new DirectorySearcher(entry, "(objectCategory=computer)", new string[0], SearchScope.Subtree))
    {
        ds.Asynchronous = true;
        ds.SizeLimit = 1;
        try
        {
            SearchResult sr = ds.FindOne();
            return (sr == null) ? false : true;
        }
        catch
        {
            return false;
        }
    }
}

问题:

  1. 为了减少对该方法的调用次数,我想知道 - 是否有可能找出 DirectoryEntry 是否可以包含不运行 DirectorySearcher 的计算机?

  2. 是否可以通过SearchScope.OneLevel 一次调用DirectorySearcher 来找到可以拥有计算机和计算机的容器

【问题讨论】:

    标签: c# active-directory directoryservices


    【解决方案1】:

    1.如果你已经有了你的directoryEntry,就不需要再找了。 我想你想要的是这样的:

    if (entry.Properties["objectCategory"].Value.ToString().Contains("Computer"))
    return true;
    else
    return false;
    

    2。 当然!

    DirectoryEntry de = new DirectoryEntry("LDAP://myldapserver.com");
    DirectorySearcher directorySearcher = new DirectorySearcher(de);
    directorySearcher.SearchScope = SearchScope.OneLevel;
    directorySearcher.Filter = "(objectCategory=computer)";
    SearchResultCollection srCollection = directorySearcher.FindAll();
    

    【讨论】:

    • 第一个假设包含对事实的验证,即entry 是一台计算机。问题中描述了第二个。所以,这不是答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多