2014-12-03 2 views
0

Я пишу приложение для создания учетной записи пользователя в домене нашей компании. Мы установили сервер Exchange 2010, и мне нужно создать для каждого нового адреса электронной почты учетной записи пользователя и включить Unify Massaging. Я создаю электронную почту без проблем, но когда я пытаюсь включить UMmailbox, я получил ошибку и не смог найти, что я делаю неправильно. Ниже часть моего кода:Как включить UMMailbox Exchange 2010

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Management.Automation; 
using System.Management.Automation.Runspaces; 
using System.Collections.ObjectModel; 


private string RunLocalExchangePowerShell(string script) 
    { 
     // create the runspace and load the snapin 
     RunspaceConfiguration rsConfig = RunspaceConfiguration.Create(); 
     PSSnapInException snapInException = null; 
     Runspace runSpace = RunspaceFactory.CreateRunspace(rsConfig); 
     runSpace.Open(); 
     rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", out snapInException); 

    string DN = @"CN=User Name,OU=Company Users,DC=local,DC=contoso,DC=com"; 

     Command enableUMMB = new Command("Enable-UMMailbox"); 
     enableUMMB.Parameters.Add("Identity", DN); 
     enableUMMB.Parameters.Add("PinExpired", false); 
     enableUMMB.Parameters.Add("UMMailboxPolicy", "UM2 Default Policy"); 
     enableUMMB.Parameters.Add("IgnoreDefaultScope"); 

     Pipeline enableUMMailbox = runSpace.CreatePipeline(); 

     enableUMMailbox.Commands.Add(enableUMMB); 

     Collection<PSObject> enabelUMmaiiboxResults = enableUMMailbox.Invoke(); 

     enableUMMailbox.Dispose(); 
     runSpace.Close(); 
    } 

Ошибка следующая:

Типа инициализатор «» Microsoft.Exchange.UM.UMCommon.UmGlobals бросил исключение.

Если я использую команду выше в консоли Powershell UMmailbow, созданную без каких-либо проблем. В Powershell консоли я использовал следующую строку:

Enable-UMMailbox -Identity "CN=User Name,OU=Company Users,DC=local,DC=contoso,DC=com" -PinExpired $false -UMMailboxPolicy "UM2 Default Policy" -IgnoreDefaultScope 

ответ

0

я нашел только один способ, как использовать Enable-UMMailbox commandlet. Я подключаюсь к серверу Exchange через URI. Нижняя часть моего кода:

string exchangePowershellRPSURI = "http://my.domain/powershell?serializationLevel=Full"; 

    PSCredential credentials = (PSCredential)null; 
    //Provides the connection information that is needed to connect to a remote runspace 
    // Prepare the connection   
    WSManConnectionInfo connInfo = new WSManConnectionInfo((new Uri(exchangePowershellRPSURI)), 
     "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials); 
    connInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos; 
    connInfo.SkipCACheck = true; 
    connInfo.SkipCNCheck = true; 
    connInfo.SkipRevocationCheck = true; 

    // Create the runspace where the command will be executed   
    Runspace runspace = RunspaceFactory.CreateRunspace(connInfo); 

    // Add the command to the runspace's pipeline   
     runspace.Open(); 
     try 
       { 
        Command enableUMMB = new Command("Enable-UMMailbox"); 
        enableUMMB.Parameters.Add("Identity", UserPrincipalName); 
        enableUMMB.Parameters.Add("PinExpired", false); 
        enableUMMB.Parameters.Add("UMMailboxPolicy", "UM2 Default Policy"); 

        Pipeline enableUMMailboxPipiLine = runspace.CreatePipeline(); 
        enableUMMailboxPipiLine.Commands.Add(enableUMMB); 
        enableUMMailboxPipiLine.Invoke(); 
       } 
       catch (ApplicationException e) 
       { 
        MessageBox.Show("Unable to connect to UMMailbox.\n Error:\n" + e.Message, 
         "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
       } 
Смежные вопросы