2008-12-09 2 views
89

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

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

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

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

+0

Поскольку я потратил немного времени на создание решения для это, я думал, что я займусь программированием и снова открою. – tvanfosson 2008-12-09 20:34:35

ответ

237

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

echo %LOGONSERVER% 
+0

Вы побеждаете. Это именно то, что я искал. – 2008-12-09 21:06:08

+3

приятно и просто ... отлично! +1 – jkp 2010-07-16 12:47:12

+0

Наверное, не то, что имел в виду тогда Дорки, но все же, возможно, что большинство читателей потока ищут. э ... это было то, что искал Доркий. Хах! – andersoyvind 2011-12-07 14:46:22

11

В 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); 
      } 
     } 
    } 
} 
0

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

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

    var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext); 
    var controller = domain.FindDomainController(); 
6

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

7

Из командной строки запрашивает переменную env logervererver.

C:> SET L

LOGONSERVER = '\' \ DCNAME

9

В ЦМД на Windows, введите следующую команду Commande:

nltest /dclist:{domainname} 

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

Смежные вопросы