作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法通过 C# 检测正在运行的 Exchange Server 版本(2003 或 2007 或 2010)?
我已经完成了 here .但是,Power Shell 1.0 不支持使用“\ROOT\MicrosoftExchangeV2”运行 WMI 查询。
因为我有场景来获取在特定服务器中找到的所有用户和组邮箱列表并将其转换为 csv 文件。
以下是我们计划用C#实现的方式
if(ExchangeVersion == "2003")
GetExchange2003UserList();
else if(ExchangeVersion == "2007")
GetExchange2007UserList();
else if(ExchangeVersion == "2010")
GetExchange2010serList();
请提供建议并引用链接
最佳答案
我可以在 CN=Configuration,DC=domain,DC=local 命名上下文中使用 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# 获取交换版本,也请分享。
关于c# - 如何在 C# 中检测目标服务器中安装了哪个版本的 exchange?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15271795/
我是一名优秀的程序员,十分优秀!