Creazione di una cassetta postale per un utente tramite webservice su un server Exchange 2007 remoto. (C #)

voti
1

EDIT Ive ha ottenuto quasi, avendo il messaggio di errore e ora che non riesce a trovare il DB di scambio. Sono in esecuzione il servizio su un server diverso allora Exchange in modo presumo che devo utilizzare un percorso UNC. MyServer01 \ First Storage Group \ Mailbox Database.edb non funziona però ...



Ciao! Mi sto frustrato qui, sentendo un mal di testa massiccia fino a venire e io sono quasi al punto di gettare il mio PC fuori dalla finestra ...

Questo è il problema, voglio creare un nuovo utente in Active Directory tramite Sharepoint, sotto l'elenco SharePoint gestisce un worflow che cattura le variabeles e li invia ad un webservice che crea l'utente in Active Directory. Questo funziona perfettamente, ma l'utente ha bisogno anche di una cassetta postale. Quindi cosa facciamo? Abbiamo impostato la proprietà di posta elettronica all'indirizzo di posta elettronica necessaria e troviamo la proprietà Crea cassetta postale .... dire whut? dov'è? NOOOOOESSS che non esiste più, MS ha deciso che ha bisogno di essere più complicato e ora l'unico modo per farlo è usare la merda di PowerShell ...

Allora ecco perché sono qui, ho cercato su google alcune informazioni su questo ed ho trovato un po 'di codice che dovrebbe fare il trucco, ma, e questo è dove mi sono bloccato, il webservice non viene eseguito sul server Exchange, ma su un server diverso, il needsw webservice per la connessione al server di scambio per eseguire il powershellshizzle ... non riesce a trovare alcuna informazione su questo, non riesce a trovare alcun esempio e così via ...

hlep ... F1 ... ecc

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Management.Automation;
using System.Management.Automation.Host;
using System.Management.Automation.Runspaces;
using Microsoft.PowerShell.Commands;  
using System.Web.Services;
using System.DirectoryServices;

namespace WebService1
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = http://tempuri.org/)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{

    [WebMethod]
    public void CreateADUser(string domain, string domainPostFix, string firstName, string emailaddress, string lastName, string department, string loginName, string password)
    {
        DirectoryEntry AD = null;
        DirectoryEntry NewUser = null;

        AD = new DirectoryEntry(LDAP://OU=Users,DC= + domain + ,DC= + domainPostFix);

        NewUser = AD.Children.Add(CN= + firstName +   + lastName, user);
        NewUser.Properties[samAccountName].Add(loginName);
        NewUser.Properties[name].Add(firstName +   + lastName);
        NewUser.Properties[displayname].Add(firstName +   + lastName);
        NewUser.Properties[givenName].Add(firstName);
        NewUser.Properties[sn].Add(lastName);
        NewUser.Properties[userprincipalname].Add(loginName + @ + domain + . + domainPostFix);
        NewUser.CommitChanges();

        NewUser.Invoke(SetPassword, new object[] { password });

        NewUser.CommitChanges();

        // E-mail shizzle, don't understand it yet, hopefully it works, if not, don't blame me -Erik
        RunspaceConfiguration runspaceConf = RunspaceConfiguration.Create();
        PSSnapInException PSException = null;
        PSSnapInInfo info = runspaceConf.AddPSSnapIn(Microsoft.Exchange.Management.PowerShell.Admin, out PSException);
        Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConf);
        runspace.Open();
        Pipeline pipeline = runspace.CreatePipeline();
        Command command = new Command(New-Mailbox);
        command.Parameters.Add(Name, TestName);

        //Enabling user account
        int val = (int)NewUser.Properties[userAccountControl].Value;
        NewUser.Properties[userAccountControl].Value = val & ~0x2;
        NewUser.CommitChanges();

        NewUser.Close();


    }
È pubblicato 20/05/2009 alle 14:26
fonte dall'utente
In altre lingue...                            


2 risposte

voti
0

La macchina si sta eseguendo questa applicazione deve disporre di strumenti di gestione di Exchange, in modo che la gestione di Exchange scatto in è disponibile.

L'account è in esecuzione su anche bisogno di avere privilegi amministrativi per Exchange.

Risposto il 11/08/2009 a 22:29
fonte dall'utente

voti
1

Questo messaggio spiega che cosa sta succedendo. In sostanza, ha usato per essere qualcosa in Exch2003 chiamato RUS che ha creato la cassetta postale per gli utenti 'parzialmente provisioning. Così si potrebbe creare un utente su LDAP, il e il RUS avrebbe scelto il nuovo utente sul suo prossimo passaggio e completare il processo con la creazione della casella di posta e fissando i suoi altri attributi AD.

Ora, nel 2007 il RUS è andato, ma è possibile ottenere la stessa funzionalità programmando alcuni cmdlet per eseguire periodicamente (ad esempio con la 'a' di comando) sul server Exchange.

Risposto il 12/08/2009 a 03:07
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more