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 ssRunasPasswordAddExchangeUser= new SecureString(); foreach (char x in runasPassword) { ssRunasPassword.AppendChar(x); } PSCredential credentials = new PSCredential(runasUsername, ssRunasPassword); var connInfo = new WSManConnectionInfo(newUri("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(); }
程式碼解釋:
- 首先需要生成管理員憑據,此管理員必須有管理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("[email protected]", "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命令