Создайте почтовый ящик для пользователя через веб-сервис на удаленном сервере Exchange 2007. (С #) - PullRequest
1 голос
/ 20 мая 2009

EDIT я получил его почти, имея и сообщение об ошибке теперь, когда он не может найти базу данных обмена. Я запускаю службу на сервере, отличном от Exchange, поэтому я предполагаю, что мне нужно использовать UNC-путь. MyServer01 \ Первая группа хранения \ Mailbox Database.edb не работает, хотя ...



Привет! Я расстраиваюсь, чувствуя сильную головную боль, и я почти готов выбросить свой компьютер из окна ...

Это проблема, я хочу создать нового пользователя в Active Directory через Sharepoint, под списком Sharepoint запускается рабочий поток, который перехватывает переменные и отправляет их веб-службе, которая создает пользователя в активном каталоге. Это прекрасно работает, но пользователю также нужен почтовый ящик. Так что же нам делать? Мы устанавливаем свойство почты на нужный адрес электронной почты и находим свойство «Создать почтовый ящик» .... скажите, что? где это находится? NOOOOOESSS его больше не существует, MS решила, что это должно быть более сложным, и теперь единственный способ сделать это - использовать дерьмо powershell ...

Так вот почему я здесь, я погуглил кое-какую информацию по этому поводу и нашел некоторый код, который должен помочь, но, и вот где я застрял, веб-сервис работает не на сервере Exchange, а на другом сервере веб-службе нужно w для подключения к серверу Exchange для запуска powershellshizzle ... не могу найти никакой информации по этому поводу, не могу найти никаких примеров и так далее ...

Хлеп ... F1 ... и т. Д.

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();


    }

Ответы [ 2 ]

1 голос
/ 12 августа 2009

Этот пост объясняет, что происходит. Обычно в Exch2003 существовало нечто, называемое RUS, которое создавало почтовый ящик для «частично подготовленных» пользователей. Таким образом, вы можете создать пользователя через LDAP, и RUS подберет нового пользователя при его следующем проходе и завершит процесс, создав почтовый ящик и исправив другие его атрибуты AD.

Теперь в 2007 году RUS исчез, но вы можете получить ту же функциональность, запланировав несколько командлетов для периодического запуска (например, с помощью команды «at») на сервере Exchange.

0 голосов
/ 12 августа 2009

На компьютере, на котором выполняется это приложение, должны быть установлены средства управления Exchange, чтобы была доступна оснастка управления Exchange.

У учетной записи, в которой вы ее используете, также должны быть права администратора для Exchange.

...