Как подключиться и создать новый почтовый идентификатор на почтовом сервере exchange, используя c #? - PullRequest
0 голосов
/ 19 февраля 2019

Я добавляю активных пользователей каталога из c #, и мне нужно создать идентификатор электронной почты для этих пользователей, используя почтовый сервер Exchange.Как проверить и создать новые почтовые идентификаторы, используя c #?

1 Ответ

0 голосов
/ 19 февраля 2019

Я сделал это, и это боль.Единственный способ программно сделать что-либо в Exchange - это PowerShell, что означает, что вам нужно запускать команды PowerShell из C #.

В идеале вы можете открыть удаленный сеанс PowerShell на одном из ваших серверов Exchange.У Microsoft есть пример того, как сделать это здесь: Получить список пользователей почты с помощью командной консоли Exchange .

Создание удаленного сеанса PowerShell будет выглядеть примерно так, при этом используетсяKerberos для проверки подлинности и запуска команды PowerShell Get-Users -ResultSize 10:

var connectionUri = "https://<server>/PowerShell";
var remoteMachineCredentials = new PSCredential(domainAndUserName, securePassword);

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
        new Uri(connectionUri),
        "http://schemas.microsoft.com/powershell/Microsoft.Exchange",
        remoteMachineCredentials) {

    AuthenticationMechanism = AuthenticationMechanism.Kerberos,
    SkipRevocationCheck = true
}
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo)) {
    using (PowerShell powershell = PowerShell.Create()) {
        powershell.AddCommand("Get-Users");
        powershell.AddParameter("ResultSize", 10);
        runspace.Open();

        powershell.Runspace = runspace;
        var results = powershell.Invoke();
        //do something with the results
    }
}

Вы также можете использовать AuthenticationMechanism.NegotiateWithImplicitCredential для проверки подлинности с учетными данными, под которыми работает ваше приложение, если это то, что вам нужно.

Я использую SkipRevocationCheck = true, чтобы пропустить проверку отзыва SSL-сертификата сервера.В моей среде у сервера, на котором я работал, нет доступа в Интернет, поэтому проверка отзыва не выполняется.Это может или не может быть правдой для вас.

Вы можете сделать это без использования удаленного PowerShell, но это включает в себя установку инструментов управления Exchange на компьютер, на котором работает ваше приложение, и естьнекоторые другие осложнения.Постарайся избежать этого.Если возможно, используйте удаленный PowerShell.

После того, как вы поняли это, вы можете запустить любую команду PowerShell, например New-Mailbox.

Вы, конечно,хотите прочитать результаты ответа PowerShell, поэтому есть еще одна статья о том, как использовать ответ командлета командной консоли Exchange .

. Имейте в виду, что ошибки PowerShell по умолчанию не завершаются (они не будут генерировать исключение), поэтому вы должны проверять наличие ошибок при каждом запуске команды.Для этого проверьте коллекцию powershell.Streams.Error.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...