2014-08-29 139 views
5

我想弄清楚Active Directory域服务是否安装了Windows服务器。如何确定服务器上是否安装了“Active Directory域服务”角色

我知道他们在Server Manager中显示出来,但如果角色在服务器上使用C#代码

+0

你问什么角色?所有这些,还是只有DC? – 2014-08-29 21:27:47

+0

Active Directory域服务角色 – user3174075 2014-08-29 21:37:35

+0

谢谢。我已经改变了你的标题,以明确你不需要一个通用机制来查找服务器上的所有角色。 – 2014-08-29 23:45:52

回答

3

如果你知道你要测试,可与域管理员权限的远程运行程序的服务器的名称,你可以使用WMI:如果你正在运行的本地服务器上

internal static bool IsDomainController(string ServerName) 
{ 
    StringBuilder Results = new StringBuilder(); 

    try 
    { 
     ManagementObjectSearcher searcher = 
      new ManagementObjectSearcher("\\\\" + ServerName + "\\root\\CIMV2", 
      "SELECT * FROM Win32_ServerFeature WHERE ID = 10"); 

     foreach (ManagementObject queryObj in searcher.Get()) 
     { 
      Results.AppendLine(queryObj.GetPropertyValue("ID").ToString()); 
     } 
    } 
    catch (ManagementException) 
    { 
     //handle exception 
    } 

    if (Results.Length > 0) 
     return true; 
    else 
     return false; 
} 

,在WMI路径更改为:

 ManagementObjectSearcher searcher = 
      new ManagementObjectSearcher("root\\CIMV2", 
      "SELECT * FROM Win32_ServerFeature WHERE ID = 10"); 

的角色及其ID号的完整列表,请参阅MSDN reference on Win32_ServerFeature

2

如果你的问题是,以查看服务器是否是域控制器安装了以编程方式获得,你可以枚举域中的域控制器并检查您正在坐的服务器的主机名,以查看它是否与它们中的任何一个匹配。为了得到域控制器列表:

 var domainControllers = new List<string>(); 
     var domain = Domain.GetCurrentDomain(); 
     foreach (var dc in domain.DomainControllers) 
     { 
      domainControllers.Add(dc.Name); 
     } 
     string whoami = Dns.GetHostname(); 

确保添加必需的错误处理(比如,如果你在工作组计算机上运行它,它会死)。

编辑:检测DCPROMO 备用方式(因为它可以安装域服务没有DCPROMO,这是一件坏事):

1)解析出(并检查是否存在)的调试日志当DCPROMO做它的事情时创建。应位于C:\ WINDOWS \调试\ dcpromo.log

2)本DSQUERY命令速度快,会给你在哪里DCPROMO是RAN的所有服务器:

dsquery * "cn=Sites,cn=Configuration,dc=MyDomain,dc=com" -Filter "(cn=NTDS Settings)" -attr distinguishedName whenCreated 

问题越来越从命令如果您使用Process启动它,则会显示在线输出工作的方式来做到这一点,并将更新一次,我有它的测试,因为我没有做过一段时间的查询AD筛选。

+0

如果域中有很多域控制器,并且它们遍布全球,则这可能需要很长时间。需要一些非常快速的东西......并且只针对程序运行的计算机。 – user3174075 2014-08-29 21:38:49

相关问题