EDIT Je l'ai eu presque, ayant et message d'erreur maintenant qu'il ne peut pas trouver le DB d'échange. J'exécute le service sur un serveur différent puis échange donc je présume que je dois employer un chemin UNC. MyServer01 \ Premier groupe de stockage \ boîte aux lettres Database.edb ne fonctionne pas si ...Créez une boîte aux lettres pour un utilisateur via un service Web sur un serveur Exchange 2007 distant. (C#)
Salut! Je suis frustré ici, sentant un mal de tête énorme à venir et je suis presque au point de jeter mon PC par la fenêtre ...
C'est le problème, je veux créer un nouvel utilisateur dans le Active Directory via Sharepoint, sous la liste Sharepoint, exécute un flux de travail qui intercepte les variabeles et les envoie à un service web qui crée l'utilisateur dans le répertoire actif. Cela fonctionne parfaitement, mais l'utilisateur a également besoin d'une boîte aux lettres. Alors, que faisons-nous? Nous définissons la propriété mail à l'adresse e-mail nécessaire et trouvons la propriété "Create Mailbox" .... dites whut? où est-ce? NOOOOOESSS il n'existe plus, MS a décidé qu'il doit être plus compliqué et maintenant la seule façon de faire cela est l'utilisation de la merde powershell ...
Alors c'est pourquoi je suis ici, j'ai googlé quelques informations à ce sujet et trouvé un code qui devrait faire l'affaire, mais, et c'est où je suis coincé, le webservice ne fonctionne pas sur le serveur Exchange mais sur un serveur différent, le webservice doit se connecter au serveur d'échange pour exécuter le powershellshizzle ... peut « t trouver toute information sur ce sujet, ne peut pas trouver des exemples et ainsi de suite ...
hlep ... F1 ... etc
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();
}