Как узнать, какой компьютер является контроллером домена в Windows, программно?

голоса
89

Я ищу способ, чтобы определить, что имя / IP-адрес контроллера домена для данного домена, что клиентский компьютер подключен.

В нашей компании мы имеем много маленьких маленькие сети, которые мы используем для тестирования, и большинство из них имеют свои собственные маленькие домены. В качестве примера, один из доменов с именем «TestLAB». У меня есть рабочая станция Windows XP, которая является членом домена TestLAB, и я пытаюсь выяснить имя контроллера домена, так что я могу пойти и посмотреть, чтобы увидеть, что пользователи были определены для домена. В нашей лаборатории есть сочетание Windows Server 2000 и Windows Server 2003 (и в действительности, вероятно, пару NT 4 серверов), так что было бы неплохо, чтобы найти решение, которое будет работать для обоих.

Глядя в Интернете, похоже, есть различные утилиты, такие как Windows, Power Shell или NLTEST, но все они требуют, чтобы загрузить и установить другие утилиты. Я надеялся найти способ, чтобы найти контроллер домена без необходимости устанавливать какие-либо дополнительные.

EDIT Если бы я хотел , чтобы написать программу , чтобы найти контроллер домена или пользователей в текущем домене, как бы я идти о выполнении этого?

Задан 09/12/2008 в 21:03
источник пользователем
На других языках...                            


7 ответов

голоса
239

С самым простым языком программирования: DOS партии

echo %LOGONSERVER%
Ответил 09/12/2008 в 21:55
источник пользователем

голоса
12

В ЦМД на Windows, введите следующую COMMANDE:

nltest /dclist:{domainname}

В нем перечислены все контроллеры домена в определенном домене

Ответил 01/10/2015 в 10:16
источник пользователем

голоса
12

. В C # / .NET 3.5 вы можете написать небольшую программу, чтобы сделать:

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

Это будет список всех пользователей в текущем домене:

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);
           }
       }
    }
}
Ответил 09/12/2008 в 21:30
источник пользователем

голоса
7

Из командной строки запроса переменной LOGONSERVER окр.

C:> SET L

LOGONSERVER = '\' \ DCNAME

Ответил 23/02/2015 в 21:55
источник пользователем

голоса
6

Запуск gpresultв командной строке Windows. Вы получите множество информации о текущем домене, текущего пользователя, пользователей и компьютерной безопасности групп, имена групповых политик Active Directory, Distinguished Name, и так далее.

Ответил 04/01/2013 в 03:46
источник пользователем

голоса
0

в Powershell: $ ENV: LogonServer

Ответил 06/03/2018 в 09:30
источник пользователем

голоса
0

Для того, чтобы получить информацию , когда DomainControllerсуществует в домене , в котором ваша машина не принадлежит, вам нужно что - то другое.

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

  var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext);
  var controller = domain.FindDomainController();
Ответил 13/11/2012 в 14:30
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more