كيف يمكنني معرفة أي جهاز كمبيوتر هو وحدة تحكم المجال في Windows برمجيًا؟

سئل على ٩ ديسمبر ٢٠٠٨  ·  تمت مشاهدة 233.8k مرة  ·  مصدر

Dorky Engineer picture
في ٩ ديسمبر ٢٠٠٨

أنا أبحث عن طريقة لتحديد اسم / عنوان IP لوحدة تحكم المجال لمجال معين يتصل به جهاز كمبيوتر عميل.

لدينا في شركتنا الكثير من الشبكات الصغيرة الصغيرة التي نستخدمها للاختبار ومعظمها لها نطاقاتها الصغيرة الخاصة. كمثال ، أحد المجالات يسمى "TESTLAB". لدي محطة عمل Windows XP عضو في مجال TESTLAB وأحاول معرفة اسم وحدة تحكم المجال حتى أتمكن من الذهاب والبحث لمعرفة المستخدمين الذين تم تعريفهم للمجال. يوجد في مختبرنا مزيج من Windows Server 2000 و Windows Server 2003 (وربما في الواقع اثنين من خوادم NT 4) لذلك سيكون من الجيد إيجاد حل يناسب كليهما.

عند البحث على الإنترنت ، يبدو أن هناك العديد من الأدوات المساعدة ، مثل Windows Power Shell أو nltest ، ولكن كل هذه الأدوات تتطلب تنزيل وتثبيت أدوات مساعدة أخرى. كنت آمل أن أجد طريقة للعثور على وحدة تحكم المجال دون الحاجة إلى تثبيت أي شيء إضافي.

تحرير إذا كنت أرغب في كتابة برنامج للعثور على وحدة تحكم المجال أو المستخدمين في المجال الحالي ، فكيف يمكنني القيام بذلك؟

الإجابات

MZywitza picture
في ٩ ديسمبر ٢٠٠٨
254

مع أبسط لغة برمجة: دفعة DOS

echo %LOGONSERVER%
Lado Morela picture
في ١ أكتوبر ٢٠١٥
20

في cmd على Windows ، اكتب الأمر التالي:

nltest /dclist:{domainname}

يسرد جميع وحدات تحكم المجال في مجال معين

tvanfosson picture
في ٩ ديسمبر ٢٠٠٨
13

في C # /. NET 3.5 ، يمكنك كتابة برنامج صغير للقيام به:

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

سيؤدي هذا إلى سرد جميع المستخدمين في المجال الحالي:

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);
           }
       }
    }
}
Sri picture
في ٢٣ فبراير ٢٠١٥
7

من الاستعلام سطر الأوامر متغير env logonserver.

C:> SET L

LOGONSERVER = '\' \ DCNAME

ErikE picture
في ٤ يناير ٢٠١٣
6

قم بتشغيل gpresult في موجه أوامر Windows. ستحصل على وفرة من المعلومات حول المجال الحالي ، والمستخدم الحالي ، ومجموعات أمان المستخدم والكمبيوتر ، وأسماء نهج المجموعة ، والاسم المميز لـ Active Directory ، وما إلى ذلك.

Wim picture
في ٦ مارس ٢٠١٨
2

في Powershell: $ env: logonserver

Brett Veenstra picture
في ١٣ نوفمبر ٢٠١٢
0

لاسترداد المعلومات عندما يكون DomainController موجودًا في مجال لا ينتمي إليه جهازك ، فأنت بحاجة إلى شيء آخر.

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

  var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext);
  var controller = domain.FindDomainController();