Windows'ta hangi bilgisayarın etki alanı denetleyicisi olduğunu programlı olarak nasıl öğrenebilirim?


102

Bir istemci bilgisayarın bağlı olduğu belirli bir etki alanı için etki alanı denetleyicisinin Adının / IP Adresinin ne olduğunu belirlemenin bir yolunu arıyorum.

Şirketimizde test etmek için kullandığımız birçok küçük ağımız var ve çoğunun kendi küçük etki alanları var. Örnek olarak, alanlardan biri "TESTLAB" olarak adlandırılmıştır. TESTLAB etki alanının üyesi olan bir Windows XP iş istasyonum var ve etki alanı için hangi kullanıcıların tanımlanmış olduğunu görebilmek için etki alanı denetleyicisinin adını bulmaya çalışıyorum. Laboratuvarımızda Windows Server 2000 ve Windows Server 2003'ün bir karışımı (ve gerçekte muhtemelen birkaç NT 4 Sunucusu) var, bu yüzden her ikisi için de işe yarayacak bir çözüm bulmak güzel olurdu.

İnternete bakıldığında, Windows Power Shell veya nltest gibi çeşitli yardımcı programlar var gibi görünüyor, ancak bunların tümü diğer yardımcı programları indirip yüklemenizi gerektiriyor. Ek bir şey yüklemek zorunda kalmadan etki alanı denetleyicisini bulmanın bir yolunu bulmayı umuyordum.

DÜZENLE Etki alanı denetleyicisini veya geçerli etki alanındaki kullanıcıları bulmak için bir program yazmak isteseydim, bunu nasıl yapabilirim?


Bunun için bir çözüm yazmak için biraz zaman harcadığım için, bunu bir programlama sorusu haline getirip yeniden açacağımı düşündüm.
tvanfosson

Yanıtlar:


253

En basit programlama diliyle: DOS batch

echo %LOGONSERVER%

Muhtemelen Dorky'nin aklındaki şey değildi, ama yine de, muhtemelen konunun okuyucularının çoğunun aradığı şeydi. eh ... Dorky'nin aradığı buydu. Hah!
andersoyvind

3
Makinenin ait olmadığı başka bir Etki Alanında bir DC arıyorsanız bu işe yaramaz.
Brett Veenstra

@DorkyEngineer bunu seçili cevabınız olarak işaretlemeye ne dersiniz?
ErikE

20

Windows'ta cmd'de aşağıdaki komutu yazın:

nltest /dclist:{domainname}

Belirli bir etki alanındaki tüm etki alanı denetleyicilerini listeler


3
ve nltest /dclist:dizüstü bilgisayarımın bağlı olduğu herhangi bir etki alanındaki tüm denetleyicileri listeler (Windows 7)
GMasucci

12

C # /. NET 3.5'te yapmak için küçük bir program yazabilirsiniz:

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

Bu, mevcut etki alanındaki tüm kullanıcıları listeler:

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

7

Komut satırından logonserver env değişkenini sorgulayın.

C:> L AYARLA

LOGONSERVER = '\' \ DCNAME


6

gpresultWindows komut isteminde çalıştırın . Geçerli etki alanı, mevcut kullanıcı, kullanıcı ve bilgisayar güvenlik grupları, grup ilkesi adları, Active Directory Ayırt Edici Adı vb. Hakkında bol miktarda bilgi alırsınız.


Raporu almak için "/ R" bağımsız değişkenini kullanmak zorunda kaldım.
Josiah

Denemelisin gpresult /Z!!
ErikE

/ Z'nin avantajı nedir? Kullanımdaki DC'yi belirlemek amacıyla karşılaştırılabilir görünüyorlar.
Josiah

1
İnsanlar, mevcut bilgi zenginliği nedeniyle seçeneğe yönlendirilmek isteyebilirler. Ancak haklısınız, SADECE DC kullanımda, diğer seçenekler daha kısa.
ErikE


0

DomainControllerMakinenizin ait olmadığı bir Etki Alanında mevcut olduğunda bilgileri almak için daha fazlasına ihtiyacınız vardır.

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

  var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext);
  var controller = domain.FindDomainController();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.