Se la tua domanda è quello di vedere se un server è un controller di dominio, è possibile enumerare i controller di dominio nel dominio e controllare il nome host del server su cui ci si trova per vedere se corrisponde a uno di essi. Per ottenere l'elenco dei controller di dominio:
var domainControllers = new List<string>();
var domain = Domain.GetCurrentDomain();
foreach (var dc in domain.DomainControllers)
{
domainControllers.Add(dc.Name);
}
string whoami = Dns.GetHostname();
Assicurarsi di aggiungere requisito gestione degli errori (come se si esegue questo su un computer del gruppo di lavoro, morirà).
EDIT: modi alternativi di rilevazione DCPROMO (perché è possibile installare Servizi di dominio senza DCPROMO, e questa è una brutta cosa):
1) analizzare fuori (e verificare l'esistenza di) il registro di debug che viene creato quando DCPROMO fa la sua cosa. Dovrebbe essere situato in c: \ windows \ debug \ Dcpromo.log
2) Questo comando DSQUERY è VELOCE e vi darà tutti i server in cui è stato eseguito DCPROMO:
dsquery * "cn=Sites,cn=Configuration,dc=MyDomain,dc=com" -Filter "(cn=NTDS Settings)" -attr distinguishedName whenCreated
problema sta che dal comando output di linea se l'hai iniziato usando Process. Lavorare su un modo per farlo e verrà aggiornato una volta che l'ho testato, in quanto non ho fatto il filtro AD in una query per un po '.
fonte
2014-08-29 21:19:33
Quali ruoli stai chiedendo? Tutti loro o solo DC? –
Il ruolo Servizi di dominio Active Directory – user3174075
Grazie. Ho cambiato il titolo per chiarire che non è necessario un meccanismo generale per trovare tutti i ruoli sul server. –