How do I programatically create an exchange 2010 mailbox using C#

前端 未结 2 1773
南旧
南旧 2021-01-14 00:08

I have been given a task to write a program to automatically create a 2010 exchange mailbox. My research tells me to use powershell but I can\'t seem to find the namespace

相关标签:
2条回答
  • 2021-01-14 00:33

    This is an old question but it might help future visitors...

    w69rdy's answer did not work for me. But I got it working and blogged about it here http://pedroliska.wordpress.com/2011/07/22/running-exchange-management-shell-commands-powershell-with-c/

    0 讨论(0)
  • 2021-01-14 00:44

    When I did it I had to download Powershell separately, not sure if this is still the case though. You can get it from here.

    Here is example code that will create a Mailbox:

    SecureString password = new SecureString();
    string str_password = "pass";
    string username = "userr";
    
    string liveIdconnectionUri = "http://exchange.wenatex.com/Powershell?serializationLevel=Full";
    
    foreach (char x in str_password)
    {
        password.AppendChar(x);
    }
    
    PSCredential credential = new PSCredential(username, password);
    
    // Set the connection Info
    WSManConnectionInfo connectionInfo = new WSManConnectionInfo((new Uri(liveIdconnectionUri)), "http://schemas.microsoft.com/powershell/Microsoft.Exchange",
    credential);
    
    connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default;
    
    // create a runspace on a remote path
    // the returned instance must be of type RemoteRunspace
    
    Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(connectionInfo);
    
    PowerShell powershell = PowerShell.Create();
    PSCommand command = new PSCommand();
    
    command.AddCommand("Enable-Mailbox");
    command.AddParameter("Identity", usercommonname);
    command.AddParameter("Alias", userlogonname);
    command.AddParameter("Database", "MBX_SBG_01");
    
    powershell.Commands = command;
    try
    {
        // open the remote runspace
        runspace.Open();
        // associate the runspace with powershell
        powershell.Runspace = runspace;
        // invoke the powershell to obtain the results
        return = powershell.Invoke();
    }
    catch (Exception ex)
    {
    
        Console.WriteLine(ex.Message);
    }
    finally
    {
        // dispose the runspace and enable garbage collection
        runspace.Dispose();
        runspace = null;
        // Finally dispose the powershell and set all variables to null to free
        // up any resources.
        powershell.Dispose();
        powershell = null;
    }
    
    0 讨论(0)
提交回复
热议问题