Перечислите все компьютеры в активном каталоге

Если Вы хотите [приблизительно 113], мотивация , чтобы учиться касаться типа считала напыщенную речь Блога Steve Yegge:

Самый Грязный Небольшой Секрет

Программирования

13
задан EKS 22 October 2009 в 07:36
поделиться

2 ответа

Если у вас очень большой домен или для вашего домена настроены ограничения на количество элементов, возвращаемых при поиске, вам, возможно, придется использовать разбиение на страницы.

using System.DirectoryServices;  //add to references

public static List<string> GetComputers()
{
    List<string> ComputerNames = new List<string>();

    DirectoryEntry entry = new DirectoryEntry("LDAP://YourActiveDirectoryDomain.no");
    DirectorySearcher mySearcher = new DirectorySearcher(entry);
    mySearcher.Filter = ("(objectClass=computer)");
    mySearcher.SizeLimit = int.MaxValue;
    mySearcher.PageSize = int.MaxValue;

    foreach(SearchResult resEnt in mySearcher.FindAll())
    {
        //"CN=SGSVG007DC"
        string ComputerName = resEnt.GetDirectoryEntry().Name;
        if (ComputerName.StartsWith("CN="))
            ComputerName = ComputerName.Remove(0,"CN=".Length);
        ComputerNames.Add(ComputerName);
    }

    mySearcher.Dispose();
    entry.Dispose();

    return ComputerNames;
}
26
ответ дан 1 December 2019 в 19:02
поделиться

Запрос LDAP, например: (objectCategory = computer) , должен помочь.

1
ответ дан 1 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: