104

I am looking for a way to determine what the Name/IP Address of the domain controller is for a given domain that a client computer is connected to.

At our company we have a lot of small little networks that we use for testing and most of them have their own little domains. As an example, one of the domains is named "TESTLAB". I have an Windows XP workstation that is a member of the TESTLAB domain and I am trying to figure out the name of the domain controller so that I can go and look to see what users have been defined for the domain. In our lab there is a mix of Windows Server 2000 and Windows Server 2003 (and in reality probably a couple of NT 4 Servers) so it would be nice to find a solution that would work for both.

Looking on the Internet, it looks like there are various utilities, such as Windows Power Shell or nltest, but these all require that you download and install other utilities. I was hoping to find a way to find the domain controller without having to install anything additional.

EDIT If I wanted to write a program to find the domain controller or the users in the current domain, how would I go about doing that?

George Stocker
  • 57,289
  • 29
  • 176
  • 237
Dorky Engineer
  • 1,054
  • 2
  • 7
  • 9
  • Since I spent a little time writing a solution for this, I thought I'd make it into a programming question and re-open. – tvanfosson Dec 09 '08 at 20:34

7 Answers7

256

With the most simple programming language: DOS batch

echo %LOGONSERVER%
MZywitza
  • 3,121
  • 1
  • 17
  • 12
20

In cmd on Windows, type the following commande:

nltest /dclist:{domainname}

It lists all domain controllers in particular domain

Luca Detomi
  • 5,564
  • 7
  • 52
  • 77
Lado Morela
  • 201
  • 2
  • 2
  • 3
    and `nltest /dclist:` lists all the controllers on any domain my laptop is connected to (Windows 7) – GMasucci Aug 16 '16 at 15:35
14

In C#/.NET 3.5 you could write a little program to do:

using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
    string controller = context.ConnectedServer;
    Console.WriteLine( "Domain Controller:" + controller );
} 

This will list all the users in the current domain:

using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
    using (UserPrincipal searchPrincipal = new UserPrincipal(context))
    {
       using (PrincipalSearcher searcher = new PrincipalSearcher(searchPrincipal))
       {
           foreach (UserPrincipal principal in searcher.FindAll())
           {
               Console.WriteLine( principal.SamAccountName);
           }
       }
    }
}
tvanfosson
  • 524,688
  • 99
  • 697
  • 795
10

From command line query the logonserver env variable.

C:> SET L

LOGONSERVER='\'\DCNAME

Sri
  • 101
  • 1
  • 2
7

Run gpresult at a Windows command prompt. You'll get an abundance of information about the current domain, current user, user & computer security groups, group policy names, Active Directory Distinguished Name, and so on.

ErikE
  • 48,881
  • 23
  • 151
  • 196
6

in Powershell: $env:logonserver

evandrix
  • 6,041
  • 4
  • 27
  • 38
Wim
  • 61
  • 1
  • 1
1

To retrieve the information when the DomainController exists in a Domain in which your machine doesn't belong, you need something more.

  DirectoryContext domainContext =  new DirectoryContext(DirectoryContextType.Domain, "targetDomainName", "validUserInDomain", "validUserPassword");

  var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext);
  var controller = domain.FindDomainController();
Brett Veenstra
  • 47,674
  • 18
  • 70
  • 86