Search code examples
c#active-directoryldap

List all computers in active directory


Im wondering how to get a list of all computers / machines / pc from active directory?

(Trying to make this page a search engine bait, will reply myself. If someone has a better reply il accept that )


Solution

  • If you have a very big domain, or your domain has limits configured on how how many items can be returned per search, you might have to use paging.

    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;
    }