2013-03-07 2 views
3

C#을 통해 (2003 또는 2007 또는 2010) 실행중인 Exchange Server 버전을 감지하는 방법이 있습니까?C#에서 대상 서버에 설치된 Exchange 버전을 확인하는 방법은 무엇입니까?

나는 here을 조사했습니다. 그러나 "\ ROOT \ MicrosoftExchangeV2"를 사용하여 WMI 쿼리를 실행하는 것은 power shell 1.0에서 지원되지 않습니다.

저는 특정 서버에서 발견 된 모든 사용자 및 그룹 사서함 목록을 가져 와서 csv 파일로 변환 할 scenerio가 있습니다.

우리가 제안을주십시오 C#

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

을의 구현도 너무 링크를 참조 계획 그 방법은 다음과

+0

이 주제가 도움이됩니까? http://stackoverflow.com/questions/9705951/get-users-exchange-server-and-email-address-in-net – Marco

답변

2
나는 CN = 구성, DC의 Active Directory LDAP 쿼리를 사용하여 수행 할 수 있습니다

= 도메인, DC = 로컬 명명 컨텍스트.

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 ""; 
      } 
     } 

주요 기능 : LDAP 이후

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(); 
      } 
} 

은 모든 버전에서 지원됩니다 여기 주 코드입니다. 그것이 모두에게 효과가 있기를 바랍니다.

또한 C#에서 Exchange 버전을 구할 수있는 다른 방법이 있다면 알려 주시기 바랍니다.

관련 문제