如何在C#中检测目标服务器中安装了哪个版本的exchange?

如何在C#中检测目标服务器中安装了哪个版本的exchange?,c#,exchange-server,C#,Exchange Server,有没有办法通过c#检测Exchange Server的哪个版本正在运行(2003、2007或2010) 我已经通过了考试。但是power shell 1.0不支持使用“\ROOT\MicrosoftExchangeV2”运行WMI查询 因为我有scenerio来获取在特定服务器中找到的所有用户和组邮箱列表,并将其转换为csv文件 下面是我们计划在C中实现的方法# 请提供建议并同时参考链接我可以在CN=Configuration、DC=domain、DC=localnaming上下文中使用Acti

有没有办法通过c#检测Exchange Server的哪个版本正在运行(2003、2007或2010)

我已经通过了考试。但是power shell 1.0不支持使用“\ROOT\MicrosoftExchangeV2”运行WMI查询

因为我有scenerio来获取在特定服务器中找到的所有用户和组邮箱列表,并将其转换为csv文件

下面是我们计划在C中实现的方法#


请提供建议并同时参考链接

我可以在CN=Configuration、DC=domain、DC=localnaming上下文中使用Active directory LDAP查询来完成。我在这里共享代码:

 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#获取exchange版本,请与我们分享。

其他方法是使用powershell命令获取

Get-ExchangeServer |格式列表名称、版本、AdminDisplayVersion

此主题对您有帮助吗?
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();
            }
}