2014-08-29 117 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

相關問題