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

Dor*_*eer 100 windows networking

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

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

在Internet上看,它看起来有各种实用程序,例如Windows Power Shell或nltest,但这些都需要您下载并安装其他实用程序.我希望找到一种方法来找到域控制器,而无需安装任何额外的东西.

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

MZy*_*tza 251

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

echo %LOGONSERVER%
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在寻找机器不属于的另一个域中的DC,则无法使用此功能. (3认同)

小智 20

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

nltest /dclist:{domainname}
Run Code Online (Sandbox Code Playgroud)

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

  • 和`nltest/dclist:`列出我的笔记本电脑连接到的任何域上的所有控制器(Windows 7) (3认同)

tva*_*son 12

在C#/ .NET 3.5中你可以写一个小程序来做:

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

这将列出当前域中的所有用户:

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);
           }
       }
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

从命令行查询logonserver env变量.

C:> SET L

LOGONSERVER = '\'\DCNAME


Eri*_*ikE 6

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


小智 5

在 Powershell 中: $env:logonserver