Как получить информацию о DAG из MS Exchange Server 2010, используя LDAP Query из AD? - PullRequest
2 голосов
/ 07 декабря 2011

Я хотел узнать о LDAP-запросах, используемых для получения дополнительной информации о Exchange Server. Что мне интересно, так это узнать больше о группах доступности данных, статистике по ним, состоянии репликации и т. Д. Я знаю, что есть некоторые CmdLets, но я хочу избегать использования PowerShell.

Я хочу знать любой возможный способ получения такой же информации из Active Directory для Exchange Server.

1 Ответ

0 голосов
/ 09 января 2013

Это крутая идея!

Все это есть в разделе конфигурации под:

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...