2014-08-29 21 views
5

Active Directory Etki Alanı Hizmetleri'nin bir windows sunucusu yüklü olup olmadığını anlamaya çalışıyorum. yapabilirsiniz,"Active Directory Etki Alanı Hizmetleri" rolünün bir sunucuda yüklü olup olmadığını belirleme

onlar Sunucu Manager'da gösterilecek biliyorum ama rol Sorunuzu bir sunucu etki alanı denetleyicisi olup olmadığını görmek için ise C# kodu

+0

Hangi rolleri soruyorsunuz? Hepsi mi yoksa sadece DC mi? –

+0

Active Directory Etki Alanı Hizmetleri rolü – user3174075

+0

Teşekkürler. Başlığınızı değiştirerek, sunucudaki _all_ rollerini bulmak için genel bir mekanizmaya ihtiyacınız olmadığını anladım. –

cevap

3

WMı'ni kullanabilirsiniz:

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; 
} 

yerel sunucuda o çalıştırıyorsanız,

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

rolleri ve bunların kimlik numaralarının tam listesi için MSDN reference on Win32_ServerFeature bakınız: WMI yolu değiştirir.

2

kullanarak bir sunucu üzerinde yüklü olup olmadığını ben programlı alabilirim etki alanındaki etki alanı denetleyicilerini numaralandırın ve herhangi biriyle eşleşip eşleşmediğini görmek için oturduğunuz sunucunun ana bilgisayar adını denetleyin.

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

(Bir çalışma grubu bilgisayarda bu çalıştırırsanız gibi, ölecek) işleme gerekli hatayı eklemek için emin olun: Etki alanı denetleyicileri listesini almak için.

DÜZENLEME:

1) dışarı ayrıştırma (ve varlığını denetlemek) hata ayıklama günlüğü: DCPROMO tespit Alternatif yollar (o DCPROMO olmadan etki alanı Hizmetleri yüklemek mümkün, çünkü bu kötü bir şey olduğunu) DCPROMO kendi işini yaptığı zaman yaratıldı. c bulunan olmalıdır: \ windows \ debug \ Dcpromo.log

2) Bu dsquery komut FAST ve DCPromo çalıştırılmadan oldu tüm sunucuları verecektir:

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

Sorun komutundan o oluyor İşlemi kullanarak başlattıysanız hat çıkışı. Bunu yapmak için bir yol üzerinde çalışıyorum ve bir kez bir sorguda AD filtrelemeyi yapmadığım için test ettiğimde güncellenir. Eğer test etmek istediğiniz ve uzaktan etki alanı yönetici ayrıcalıkları ile programı çalıştırabilirsiniz sunucusunun adını, biliyorsanız

+0

Bu, etki alanında çok fazla etki alanı denetleyiciniz varsa ve bunlar tüm dünyaya yayılmışlarsa, uzun sürebilir. Çok hızlı bir şeye ihtiyacın var ... ve sadece programın çalıştığı bilgisayar için. – user3174075

İlgili konular