Listing all Computer in Active Directory


This application does one simple task. On any network where Microsoft Active Directory is used it will list all computers on the network. I faced this problem when I wanted to document all of the computers on the network using WMI .

One of the strengths of Active Directory is it allows you to create a representation of your organization. Imagine a large network spanning multiple physical locations with around 5000 computers for example.

In Active Directory I could have one folder or what Active Directory calls an OU or Organizational Unit. In that OU I could have all my computers listed. Of course realistically I would want to have multiple OUs to break up the list of computers. For instance I could have one OU per site. If that still left me with large amounts of computers in each OU I could then break it down by department etc. The advantage of doing this soft of thing is you could then assign an administrator for each OU.

My problem was assuming a scenario above, how would I get a list of all computers in an organizations Active Directory when they could be stored in OUs within OUs etc. Surely I dont have to write complex code to walk down an Active Directory tree with sub nodes etc? As it turns out there is a very simple solution to this problem. Each Active Directory entry has an objectClass property associated with it. Using this property allows me to search on just computers. I could also do the same for users etc.

I discovered this by outputting my companied Active Directory to a CSV file and then reading the data in Microsoft Excel.

Running the code below (assuming you have put in your own domain name) will list all the computers in your Active Directory. You could then feed the list to your networks DNS to get their IP addresses.

I love a simple solution J

Source Code:

//ActiveDirectorySearch1
//Displays all computer names in an Active Directory
using System;
using
System.DirectoryServices;
namespace
ActiveDirectorySearch1
{
class
Class1
{
static void Main (string
[] args)
{
//Note : microsoft is the name of my domain for testing purposes.
DirectoryEntry entry = new
DirectoryEntry(LDAP://microsoft);
DirectorySearcher mySearcher =
new
DirectorySearcher(entry);
mySearcher.Filter = ("(objectClass=computer)");
Console.WriteLine("Listing of computers
in
the Active Directory");
Console.WriteLine("============================================");
foreach(SearchResult resEnt in
mySearcher.FindAll())
{
Console.WriteLine(resEnt.GetDirectoryEntry().Name.ToString()); }
Console.WriteLine("=========== End of Listing =============");
}
}
}