C#操作AD及Exchange Server總結(二)


上一節C#操作AD及Exchange Server總結(一)寫了對AD的操作,新建AD用戶后,通常都需要為此用戶開啟Exchange郵箱,接下來寫如何遠程操作Exchange。

三、對Exchange Server操作

操作exchange會用到新的DLL,需要安裝Windows power shell,安裝后在路徑:C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0(測試機為64位)下找到System.Management.Automation.dll,在項目中引入。

1、為AD用戶新建郵箱

上一節我們在AD中加入並啟用了一個用戶Employee01,下面我們繼續在上一節創建的項目中編寫代碼,為該用戶開啟郵箱。

新建一個ExchangeMange.cs文件,添加下面的方法:

public void AddExchangeUser(string identity, string alias)
        {
            string runasUsername = @"contoso\管理員賬號";
            string runasPassword = "管理員密碼";
            SecureString ssRunasPassword = new SecureString();
            foreach (char x in runasPassword)
            {
                ssRunasPassword.AppendChar(x);
            }
            PSCredential credentials =
                new PSCredential(runasUsername, ssRunasPassword);
            var connInfo = new WSManConnectionInfo(new Uri("http://exchange服務器IP/PowerShell"),
                "http://schemas.microsoft.com/powershell/Microsoft.Exchange",
                credentials);
            connInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
            var runspace = RunspaceFactory.CreateRunspace(connInfo);
            var command = new Command("Enable-Mailbox");
            command.Parameters.Add("Identity", identity);
            command.Parameters.Add("Alias", alias);
            runspace.Open();
            var pipeline = runspace.CreatePipeline();
            pipeline.Commands.Add(command);
            var results = pipeline.Invoke();
            Console.WriteLine("通道錯誤數:" + pipeline.Error.Count);
            runspace.Dispose();
        }
AddExchangeUser

代碼解釋:

  • 首先需要生成管理員憑據,此管理員必須有管理exchange服務器的權限
  • 生成一個連接類型,傳入exchange服務器IP、將要使用的Scheme以及管理員憑據
  • 打開一個命令空間,創建管線通道,傳入要運行的powershell命令,執行命令
  • 釋放連接資源

這段代碼對應的powershell命令相當於本地運行的“Enable-Mailbox -Identity 'rzh.com/CompanyA/Employee01' -Alias 'Employee01'”

編寫測試代碼:

static void Main(string[] args)
        {
            ExchangeMange manage = new ExchangeMange();
            Console.WriteLine("Start to enable user maibox...");
            try
            {
                manage.AddExchangeUser("Employee01@contoso.com", "Employee01");
            }
            catch (System.Management.Automation.RuntimeException ex)
            {
                Console.WriteLine("enable user maibox error...");
                Console.WriteLine(ex);
                Console.ReadLine();
            }
            Console.WriteLine("Finish to enable user maibox...");
            Console.ReadLine();
        }
測試代碼

此時運行代碼會報出下面的錯誤

錯誤信息很詳細,說明了出錯的原因,服務器不支持客戶端請求的身份驗證機制。

需要對客戶端和服務器端進行一些配置。

2、配置客戶端和服務器

客戶端配置:

運行gpedit.msc進入本地組策略管理器,計算機配置》管理模版》Windows組件》WinRM》WinRM客戶端

啟用允許為加密通信,啟用受信任的主機並添加exchange服務器IP地址到TrustedHostsList

服務器端配置:

啟用IIS基本身份驗證

SSL設置中不要求SSL

再次運行代碼

用以上示例可以看到如何利用System.Management.Automation的類型和方法對Exchange進行操作的整個過程,其他的操作唯一不同的就是command命令,只要我們知道Powershell的命令,就可以替換上面代碼中的Command段,進行操作。

三、總結歸納

1、AD操作總結

  • 了解DirectoryEntry類型
  • 學會創建AD各種類型的方法
  • 學會設置AD類型的屬性

2、Exchange操作總結

  • 了解System.Management.Automation下的類型和方法
  • 配置客戶端和服務器端
  • 掌握powershell命令

這是我自己的一些小總結,希望對讀者有所幫助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM