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