3

c# を使用して、実行されている Exchange Server のバージョン (2003 または 2007 または 2010) を検出する方法はありますか?

私は ここを通過しました 。ただし、"\ROOT\MicrosoftExchangeV2" を使用した WMI クエリの実行は、Power Shell 1.0 ではサポートされていません。

特定のサーバーで見つかったすべてのユーザーとグループのメールボックス リストを取得し、csv ファイルに変換するシーンがあるためです。

以下は、C# での実装を計画した方法です。

if(ExchangeVersion == "2003")
   GetExchange2003UserList();
else if(ExchangeVersion == "2007")
   GetExchange2007UserList();
else if(ExchangeVersion == "2010")
   GetExchange2010serList();

提案を提供し、リンクも参照してください

4

2 に答える 2

3

CN = Configuration、DC = domain、DC=localネーミングコンテキストでActiveDirectoryLDAPクエリを使用して実行できます。私はここでコードを共有しています:

 public static string getExchangeServerVersion()
        {
            try
            {
                string domain =Domain.GetCurrentDomain().ToString();
                DirectoryEntry rootDSE = new DirectoryEntry(string.Format("LDAP://{0}/rootDSE",  domain));
                DirectoryEntry objDirectoryEntry = new DirectoryEntry(string.Format("LDAP://{0}/{1}",domain,rootDSE.Properties["configurationNamingContext"].Value.ToString()));
                DirectorySearcher searcher = new DirectorySearcher(objDirectoryEntry, "(&(objectClass=msExchExchangeServer))");
                SearchResultCollection col = searcher.FindAll();
                string version = string.Empty;
                foreach (SearchResult result in col)
                {
                    DirectoryEntry user = result.GetDirectoryEntry();
                    if (String.Equals(user.Properties["name"].Value.ToString(),Dns.GetHostName(),StringComparison.InvariantCultureIgnoreCase))
                    {
                        version = user.Properties["serialNumber"].Value.ToString();
                        break;
                    }
                }
                return version;

            }
            catch (Exception ex)
            {
                Console.WriteLine("\nError : " + ex.Message);
                return "";
            }
        }

主な機能 :

static void main()
{

     string exchangeServerVersion = string.Empty;
     exchangeServerVersion =getExchangeServerVersion();
     if (exchangeServerVersion.Contains("Version 6"))
            {
                users.GetExchange2003UserList();
                GetADGroupList();
            }
            else if (exchangeServerVersion.Contains("Version 8"))
            {
                users.GetExchange2007UserList();
                GetADGroupList();
            }
            else if (exchangeServerVersion.Contains("Version 14"))
            {
                users.GetExchange2010UserList();
                GetADGroupList();
            }
}

LDAPはすべてのバージョンでサポートされているため。それがすべての人に役立つことを願っています。

また、C#から交換バージョンを取得する他の方法がある場合は共有してください。

于 2013-03-08T05:47:32.543 に答える