Listing all Computers Active Directory in VB.NET

 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 OU's 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 OU's within OU's etc. Surely I don't 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.

Source Code:

'ActiveDirectorySearch1
'Displays all computer names in an Active Directory
'Written 08/26/02 - John O'Donnell
Imports System
Imports System.DirectoryServices 
Namespace ActiveDirectorySearch1
Class Class1
Shared Sub Main(ByVal args() As String)
'Note : microsoft is the name of my domain for testing purposes.
Dim enTry As DirectoryEnTry = New DirectoryEnTry(LDAP://microsoft)
Dim mySearcher As DirectorySearcher = New DirectorySearcher(enTry)mySearcher.Filter = ("(objectClass=computer)")
Console.WriteLine("Listing of computers 
in the Active Directory") 
Console.WriteLine("======================") 
Dim resEnt As SearchResult
For Each resEnt In mySearcher.FindAll()
Console.WriteLine(resEnt.GetDirectoryEnTry().Name.ToString())
Next
Console.WriteLine("=========== End of Listing =============")
End Sub
End
 Class
End
 Namespace