如何以编程方式找出Windows中的域控制器是哪台计算机?

时间:2008-12-09 20:03:26

标签: windows networking

我正在寻找一种方法来确定客户端计算机所连接的给定域的域控制器的名称/ IP地址。

在我们公司,我们有很多小网络用于测试,大多数都有自己的小网域。例如,其中一个域名为“TESTLAB”。我有一个Windows XP工作站,它是TESTLAB域的成员,我试图弄清楚域控制器的名称,以便我可以去看看为域定义了哪些用户。在我们的实验室中有Windows Server 2000和Windows Server 2003的混合(实际上可能有几个NT 4服务器),所以找到一个适合两者的解决方案会很不错。

在互联网上看,看起来有各种实用程序,例如Windows Power Shell或nltest,但这些都要求您下载并安装其他实用程序。我希望找到一种方法来找到域控制器而无需安装任何其他内容。

编辑如果我想编写程序来查找域控制器或当前域中的用户,我该怎么做呢?

7 个答案:

答案 0 :(得分:249)

使用最简单的编程语言:DOS批处理

echo %LOGONSERVER%

答案 1 :(得分:18)

在Windows上的cmd中,键入以下命令:

function load(path) {  
  var req = new XMLHttpRequest();
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      var resp = req.responseText;
      var cont = resp.slice(resp.indexOf('id="posts">') + 11, resp.indexOf("<!--posts-->"));
      document.getElementById("posts").innerHTML = document.getElementById("posts").innerHTML + cont;
    }
  }
  req.open("GET", path, true);
  req.send();
}

var page = 1;
document.getElementById("loadmore").onclick = function () {
    page++;
    var pathToLoad = "/page/" + page;
    load(pathToLoad);
}

它列出了特定域中的所有域控制器

答案 2 :(得分: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);
           }
       }
    }
}

答案 3 :(得分:7)

从命令行查询logonserver env变量。

C:&GT; SET L

LOGONSERVER = '\' \ DCNAME

答案 4 :(得分:6)

在Windows命令提示符下运行gpresult。您将获得有关当前域,当前用户,用户和用户的大量信息。计算机安全组,组策略名称,Active Directory可分辨名称等。

答案 5 :(得分:2)

Powershell中的

:$ env:logonserver

答案 6 :(得分:0)

要在您的机器所属的域中存在DomainController时检索信息,您需要更多内容。

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

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