2008-12-09 7 views
89

Ich suche nach einer Möglichkeit zu bestimmen, wie der Name/die IP-Adresse des Domänencontrollers für eine bestimmte Domäne ist, mit der ein Clientcomputer verbunden ist.Wie finde ich heraus, welcher Computer in Windows der Domänencontroller programmgesteuert ist?

In unserem Unternehmen haben wir viele kleine kleine Netzwerke, die wir zum Testen verwenden und die meisten von ihnen haben ihre eigenen kleinen Domänen. Als Beispiel wird eine der Domänen "TESTLAB" genannt. Ich habe eine Windows XP-Workstation, die ein Mitglied der TESTLAB-Domäne ist, und ich versuche, den Namen des Domänencontrollers herauszufinden, damit ich nachsehen kann, welche Benutzer für die Domäne definiert wurden. In unserem Labor gibt es eine Mischung aus Windows Server 2000 und Windows Server 2003 (und in Wirklichkeit wahrscheinlich ein paar NT 4 Server), also wäre es schön, eine Lösung zu finden, die für beide funktioniert.

Im Internet sieht es so aus, als gäbe es verschiedene Dienstprogramme, wie Windows Power Shell oder nltest, aber alle diese erfordern, dass Sie andere Dienstprogramme herunterladen und installieren. Ich hatte gehofft, einen Weg zu finden, den Domänencontroller zu finden, ohne etwas Zusätzliches installieren zu müssen.

BEARBEITEN Wenn ich ein Programm schreiben wollte, um den Domänencontroller oder die Benutzer in der aktuellen Domäne zu finden, wie würde ich das tun? .

+0

Da habe ich ein wenig Zeit für eine Lösung geschrieben Ich dachte, ich würde es zu einer Programmierfrage machen und es wieder öffnen. – tvanfosson

Antwort

237

Mit der einfachsten Programmiersprache : DOS Batch

echo %LOGONSERVER% 
+0

Sie gewinnen. Genau das habe ich gesucht. –

+3

schön und einfach ... großartig! +1 – jkp

+0

Wahrscheinlich nicht, was Dorky damals im Sinn hatte, aber immer noch, wahrscheinlich, wonach die meisten Leser des Threads suchen. Äh ... es war was Dorky suchte. Hah! – andersoyvind

11

In C#/.NET 3.5 können Sie ein kleines Programm schreiben zu tun:

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

Diese alle Benutzer in der aktuellen Domäne auflistet:

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

die Informationen abzurufen, wenn der DomainController in einem Dom existiert In dem Ihre Maschine nicht hingehört, brauchen Sie etwas mehr.

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

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

Führen Sie gpresult an einer Windows-Eingabeaufforderung. Sie erhalten eine Fülle von Informationen über die aktuelle Domäne, aktuellen Benutzer, Benutzer & Computer-Sicherheitsgruppen, Gruppenrichtliniennamen, Active Directory Distinguished Name und so weiter.

+0

Ich musste das Argument "/ R" verwenden, um den Bericht zu erhalten. – flickerfly

+0

Sie sollten 'gpresult/Z' versuchen !! – ErikE

+0

Was ist der Vorteil von/Z? Zur Bestimmung der verwendeten DC scheinen sie vergleichbar zu sein. – flickerfly

7

Von der Befehlszeile aus die Variable logonserver env abfragen.

C:> SET L

Logonserver = '\' \ DCNAME

+0

wusste nicht, dass der Befehl set sich so verhielt. Danke für den Tipp! – ojblass

9

In cmd auf Windows, geben Sie den folgenden commande:

nltest /dclist:{domainname} 

Es alle Domänencontroller in bestimmten Domäne auflistet

+3

und 'nltest/dclist:' listet alle Controller in einer beliebigen Domäne auf, mit der mein Laptop verbunden ist (Windows 7) – GMasucci

0

in Powershell: $ env: logonserver

+0

Dies liefert keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/19019083) – cezar

Verwandte Themen