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.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 =============");
}
}
}
Sam FrankPosted Jun 24, 2007, 11:58 AM
Hi John, Thanks for the script. I am not a C# or a scripting guy. Would love to know how I could use this to get the list of computers from my AD domain. Your help would be appreciated!
ahmad hussainPosted Mar 6, 2007, 5:49 AM
Nice article ! How can I display/bind AD users into Data grid Any help will be appreciated in advance
karim diabPosted Dec 2, 2006, 9:39 AM
Dear Sir, I would really appreciate if you can help me. I am a System Administrator, who is trying to make a windows application that can gives me all the information found about all the users in the domain (Active Directory). I want the code to be in C# language & I need it as soon as possible I still have tomorrow to finish from it. If you can help me please send me a sample code to my e-mail: [email protected]. Thank you in advance for your consideration.
rogerPosted Aug 1, 2006, 6:35 AM
Hi ! This works for me as I'm planning to build applications for our enterprise that will connect to every pc on the network and perform updates like copying and updating files, and so on... I think I'm on the "right way" to do this stuf... Thanks ! Roger Tranchez
RadekPosted Mar 18, 2006, 8:22 AM
Hi, I need to locate all the workstations in a domain include the information(NativeGuid, SAMAccountName) about the logged in user. I was trying to use the property lastLogon and lastLogoff, but I got the error message. Please can you help me? Thanks a lot
VinoeditedPosted Mar 6, 2006, 1:42 AMEdited Jun 9, 2006, 9:05 AM
Sir, I created an Application which lists the Logged-in User's details from the Active Directory.It worked fine when I run on my system.When I take the URL to another sytem and chek I am raised with the System.Runtime.InteropServices.COMException. Please help me so tht I can run my application across system and get the respective Logged-inUser's Details. Need an urgent solution to this problem
VinoPosted Mar 6, 2006, 1:39 AM
Sir,