Это крутая идея!
Все это есть в разделе конфигурации под:
CN = Microsoft Exchange, CN = Службы, CN = Конфигурация, DC = xx, DC = xx.
Приведенный ниже код C # извлекает роли сервера и должен помочь вам начать работу.
Информация о роли поступает от здесь .
using (DirectoryEntry de = new DirectoryEntry("LDAP://RootDSE"))
{
var NamingContext = de.Properties["configurationNamingContext"][0];
using (DirectoryEntry de_NC = new DirectoryEntry("LDAP://" + NamingContext))
{
using (DirectorySearcher ds = new DirectorySearcher(de_NC))
{
ds.PropertiesToLoad.Add("cn");
ds.Filter = "(&(objectCategory=msExchExchangeServer)(msExchCurrentServerRoles:1.2.840.113556.1.4.803:=2))";
Output("Mailbox Role Servers:", ds, "cn");
ds.Filter = "(&(objectCategory=msExchExchangeServer)(msExchCurrentServerRoles:1.2.840.113556.1.4.803:=4))";
Output("CAS Role Servers:", ds, "cn");
ds.Filter = "(&(objectCategory=msExchExchangeServer)(msExchCurrentServerRoles:1.2.840.113556.1.4.803:=16))";
Output("Unified Messaging Role Servers:", ds, "cn");
ds.Filter = "(&(objectCategory=msExchExchangeServer)(msExchCurrentServerRoles:1.2.840.113556.1.4.803:=32))";
Output("Hub Transport Role Servers:", ds, "cn");
ds.Filter = "(&(objectCategory=msExchExchangeServer)(msExchCurrentServerRoles:1.2.840.113556.1.4.803:=64))";
Output("Edge Transport Role Servers:", ds, "cn");
}
}
}
static void Output(string Titel, DirectorySearcher ds, string Property)
{
Console.WriteLine(Titel);
SearchResultCollection src = ds.FindAll();
foreach (SearchResult RoleServer in src)
{
Console.WriteLine(RoleServer.Properties[Property][0].ToString());
}
if (src.Count < 1)
Console.WriteLine("---");
Console.WriteLine();
}