Πώς μπορώ να μάθω ποια υπολογιστής είναι ο ελεγκτής τομέα των Windows μέσω προγραμματισμού;

ψήφοι
89

Ψάχνω για έναν τρόπο για να καθορίσει τι το Όνομα / διεύθυνση IP του ελεγκτή τομέα είναι για ένα συγκεκριμένο τομέα που ένας υπολογιστής-πελάτης είναι συνδεδεμένος.

Στην εταιρία μας έχουμε ένα πολύ μικρό μικρό δίκτυα που χρησιμοποιούμε για τη δοκιμή και τα περισσότερα από αυτά έχουν τη δική τους μικρή τομείς. Για παράδειγμα, ένας από τους τομείς που ονομάζεται «TESTLAB». Έχω ένα σταθμό εργασίας των Windows XP που είναι μέλος του τομέα TESTLAB και προσπαθώ να καταλάβω το όνομα του ελεγκτή τομέα, ώστε να μπορώ να πάω και να κοιτάξουμε να δούμε τι οι χρήστες έχουν οριστεί για τον τομέα. Στο εργαστήριό μας υπάρχει ένα μίγμα του Windows Server 2000 και Windows Server 2003 (και στην πραγματικότητα ίσως μια-δυο NT 4 Servers), έτσι θα ήταν ωραίο να βρεθεί μια λύση που θα μπορούσε να λειτουργήσει και για τους δύο.

Κοιτάζοντας στο Διαδίκτυο, φαίνεται πως υπάρχουν διάφορα βοηθητικά προγράμματα, όπως το Windows ισχύος της Shell ή nltest, αλλά όλα αυτά απαιτούν να κατεβάσετε και να εγκαταστήσετε άλλα βοηθητικά προγράμματα. Ήλπιζα να βρούμε έναν τρόπο για να βρει τον ελεγκτή τομέα, χωρίς να χρειάζεται να εγκαταστήσετε τίποτα επιπλέον.

EDIT Αν ήθελα να γράψω ένα πρόγραμμα για να βρει τον ελεγκτή τομέα ή τους χρήστες στην τρέχουσα περιοχή, πώς θα πάει για να κάνει αυτό;

Δημοσιεύθηκε 09/12/2008 στις 21:03
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
239

Με την πιο απλή γλώσσα προγραμματισμού: παρτίδα DOS

echo %LOGONSERVER%
Απαντήθηκε 09/12/2008 στις 21:55
πηγή χρήστη

ψήφοι
12

Στο cmd στα Windows, πληκτρολογήστε την ακόλουθη commande:

nltest /dclist:{domainname}

Παραθέτει όλους τους ελεγκτές τομέα στον συγκεκριμένο τομέα

Απαντήθηκε 01/10/2015 στις 10:16
πηγή χρήστη

ψήφοι
12

. Στην 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);
           }
       }
    }
}
Απαντήθηκε 09/12/2008 στις 21:30
πηγή χρήστη

ψήφοι
7

Από την γραμμή εντολών ερώτημα της μεταβλητής logonserver env.

C:> SET L

LOGONSERVER = '\' \ DCNAME

Απαντήθηκε 23/02/2015 στις 21:55
πηγή χρήστη

ψήφοι
6

Τρέξτε gpresultσε μια γραμμή εντολών των Windows. Θα πάρετε μια πληθώρα πληροφοριών σχετικά με την τρέχουσα τομέα, τρέχοντα χρήστη, ομάδες χρηστών και την ασφάλεια των υπολογιστών, ονόματα πολιτική ομάδα, Active Directory αποκλειστικό όνομα, και ούτω καθεξής.

Απαντήθηκε 04/01/2013 στις 03:46
πηγή χρήστη

ψήφοι
0

στην Powershell: $ env: logonserver

Απαντήθηκε 06/03/2018 στις 09:30
πηγή χρήστη

ψήφοι
0

Για να ανακτήσετε τις πληροφορίες, όταν η DomainControllerυπάρχει σε έναν τομέα στον οποίο το μηχάνημά σας δεν ανήκει, θα πρέπει να έχετε κάτι περισσότερο.

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

  var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext);
  var controller = domain.FindDomainController();
Απαντήθηκε 13/11/2012 στις 14:30
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more