none
Creation d'un compte mail Exchange avec EWS RRS feed

  • Question

  • Bonjour

     

    Je souhaite créer un compte mail exchange 2010 SP1, plus spécifiquement activer/créer une boite mail liée à un compte existant dans Active Directory.

    Cela fonctionne dans le cadre d'une application web permettant l'administration de compte AD/Exchange en C# .NET4.0

    Actuellement j'utilise une commande PowerShell (Enable-Mailbox) via un Runspace Pipeline, cela fonctionne bien mais le traitement prend entre 10 et 20 secondes, ce qui est beaucoup trop long.

    Est-il possible d'effectuer le même traitement avec EWS ?

     

    Merci d'avance

    lundi 16 mai 2011 10:08

Réponses

  • Bonjour,

    A ma connaissance EWS ne vous permet pas de gérer des boites aux lettres. La gestions des boites au lettres se fait uniquement la console de gestion exchange ou le Powershell.

    Dans votre cas, l'utilisation du Powershell est l'unique solution. Mais je pense que trouver une solution à la lenteur est la vraie et bonne question...

    Peut-tu nous expliquer quelle est l'architecture mise en place et sa configuration? (Exchange,AD et votre application...) ?


    Best Regards Don't forget to mark it as answer if it helps
    • Marqué comme réponse Seb.D vendredi 20 mai 2011 08:36
    jeudi 19 mai 2011 15:04

Toutes les réponses

  • Bonjour,

    A ma connaissance EWS ne vous permet pas de gérer des boites aux lettres. La gestions des boites au lettres se fait uniquement la console de gestion exchange ou le Powershell.

    Dans votre cas, l'utilisation du Powershell est l'unique solution. Mais je pense que trouver une solution à la lenteur est la vraie et bonne question...

    Peut-tu nous expliquer quelle est l'architecture mise en place et sa configuration? (Exchange,AD et votre application...) ?


    Best Regards Don't forget to mark it as answer if it helps
    • Marqué comme réponse Seb.D vendredi 20 mai 2011 08:36
    jeudi 19 mai 2011 15:04
  • Salutations

     

    Je ne connais pas tellement l'architecture, hormis qu'il s'agisse d'un serveur de développement qui n'est pas sur le même domaine.

    Il dispose de Exchange 2010 SP1 avec la console d'administration PowerShell avec tout ce qui va bien (géré par l'admin sys. donc pas de souci de ce coté là je pense).

    Pour ce qui est du code de l'appli.

        public Boolean createUserMailbox(String mail)
        {
          String err = "";
          String snapinName = "";
          String mbdb = "";
          Boolean created = false;
    
          ICollection<PSObject> results = null;
    
          // Create a runspace. We can't use the RunspaceInvoke class this time
          // because we need to get at the underlying runspace to explicitly
          // add the commands.
          RunspaceConfiguration rc = RunspaceConfiguration.Create();
          PSSnapInException snapEx = null;
    
          try
          {
            snapinName = ConfigurationManager.AppSettings["SNAPIN_NAME"].ToString();
            mbdb = ConfigurationManager.AppSettings["MBDB"].ToString();
          }
          catch (Exception e)
          {
            String function = "activeDirectory#createUserMailbox#appSettings";
            Utils.setLog(function, e.ToString(), EventLogEntryType.Error);
            return false;
          }
    
          PSSnapInInfo info = rc.AddPSSnapIn(snapinName, out snapEx);
          Runspace myRunSpace = RunspaceFactory.CreateRunspace(rc);
          myRunSpace.Open();
    
          // Create a pipeline...
          Pipeline pipeLine = myRunSpace.CreatePipeline();
     
          using (pipeLine)
          {
            // Create a command object so we can set some parameters
            // for this command.
            Command newMbx = new Command("Enable-Mailbox");
    
            newMbx.Parameters.Add("Identity", mail);
            newMbx.Parameters.Add("Alias", Utils.getSamId(mail));
            newMbx.Parameters.Add("PrimarySmtpAddress", mail);
            newMbx.Parameters.Add("Database", mbdb);
            // Add the command we've constructed
            pipeLine.Commands.Add(newMbx);
     
            // Execute the pipeline and save the objects returned.
            results = pipeLine.Invoke();
     
            // Print out any errors in the pipeline execution
            // NOTE: These error are NOT thrown as exceptions!
            // Be sure to check this to ensure that no errors
            // happened while executing the command.
            if (pipeLine.Error != null && pipeLine.Error.Count > 0)
            {
              err = "ERROR: There were pipeline errors...\n";
              foreach (object item in pipeLine.Error.ReadToEnd())
              {
                err += "Error: " + item.ToString() + "\n";
              }
    
              created = false;
            }
     
            // Print out the results of the pipeline execution
            if (results != null && results.Count > 0)
            {
              err += "MAILBOXES CREATED: Created the following mailboxes...\n";
              foreach (PSObject ps in results)
              {
                if (ps.Members["UserPrincipalName"].Value != null)
                {
                  err += "UserPrincipalName: " + ps.Members["UserPrincipalName"].Value + "\n";
                }
              }
    
              created = true;
            }
          }
     
          pipeLine = null;
          myRunSpace.Close();
          myRunSpace = null;
    
          if (!created)
          {
            String function = "activeDirectory#createUserMailbox#PowerShell";
            Utils.setLog(function, err, EventLogEntryType.Error);
          }
    
          return created;
        }
      }
    

    Il ne semble pas y avoir d'erreur ici d'autant plus que le temps que met l'application à créer une boite mail équivaut au temps que met la console PowerShell à se lancer sur le serveur lorsque j'utilise MSTSC.

     

    Si toutefois vous connaissiez une méthode "moins lourde", je suis preneur.

    Le cas échéant cela n'est pas trop gênant puisque j'ai déjà la réponse à ma question.

     

    Cordialement

     

    jeudi 19 mai 2011 15:42
  • Re,

    Si le temps mis par la requête Powershell pour la création d'une boite aux lettres et presque le même mis par votre application, alors je pense que la il faut bien voir la configuration matériel de votre serveur exchange et bien particulièrement la mémoire RAM.

    Bonne Chance


    Best Regards Don't forget to mark it as answer if it helps
    jeudi 19 mai 2011 16:09