Контакт не создается при запуске командлета New-MailContact из кода C#

У меня есть приложение, которое (среди прочего) должно вызывать командлет New-MailContact и создавать контакты в Active Directory. Я просмотрел несколько технических статей, чтобы дойти до того, что у меня есть, но это все еще не работает.

Я проверил, что моя учетная запись службы имеет надлежащую аутентификацию на основе эта страница TechNet. Я могу найти и вызвать командлет из powershell, и я не получаю никаких ошибок.

Однако после запуска я проверяю свою OU, и мой контакт не был создан. Я нашел эту статью в базе знаний, которая, по моему мнению, может быть подозрительной, но поскольку командлет не возвращает любые ошибки после вызова, я не могу быть уверен, что это решит мою проблему.

Вот фрагмент того, что я делаю:

    public bool CreateMailContactObject(ADExchangeContact adExchangeContacts)
    {
        Collection<PSObject> results;
        Pipeline pipeLine = null;

        try
        {
            var runspaceConfiguration = RunspaceConfiguration.Create();
            PSSnapInException snapInException;
            var snapInInfo = runspaceConfiguration.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);

            using (var runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
            {
                var newMailBoxContact = new Command("New-MailContact");
                newMailBoxContact.Parameters.Add("Name", adExchangeContacts.DisplayName);
                newMailBoxContact.Parameters.Add("ExternalEmailAddress", adExchangeContacts.ExternalEmailAddress);
                newMailBoxContact.Parameters.Add("OrganizationalUnit", adExchangeContacts.OrganizationalUnit);
                newMailBoxContact.Parameters.Add("Alias", adExchangeContacts.Alias);

                runspace.Open();

                pipeLine = runspace.CreatePipeline();
                pipeLine.Commands.Add(newMailBoxContact);

                results = pipeLine.Invoke();

                _log.DebugFormat("results.Count = {0}", results.Count);
                results.ForEach(x => x.Properties.ForEach(y => _log.DebugFormat("{0}: {1}", y.Name, y.Value)));

                pipeLine.Stop();
                runspace.Close();
            }

            return true;
        }
        catch (Exception ex)
        {
            // Add log statement
            _log.ErrorFormat("Creation of Mail Contact in AD Failed. Error: {0}", ex);
            return false;
        }            
    }

Я не получаю никаких исключений, и мой список результатов пуст из вызова Pipeline. Есть ли что-то, что мне не хватает? Если командлет выйдет из строя из-за разрешений при создании контакта в AD, разве я не ожидаю получить какую-то ошибку в результирующем наборе от pipeLine.Invoke() ??

Я новичок в использовании Powershell, поэтому, если есть другая проблема (помимо статьи базы знаний), которая может возникнуть, сообщите мне об этом.


person J_D    schedule 08.05.2012    source источник


Ответы (1)


    if (pipeline.Error != null && pipeline.Error.Count > 0)
                {
                    StringBuilder pipelineError = new StringBuilder();
                    pipelineError.AppendFormat("Error calling Add-MailboxPermission.");
                    foreach (object item in thisPipeline.Error.ReadToEnd())
                    {
                        pipelineError.AppendFormat("{0}\n", item.ToString());
                    }

                    ErrorText = ErrorText + "Error: " + pipelineError.ToString() + Environment.NewLine;
                }

Поместите этот код после pipeline.Invoke() и проверьте, нет ли там ошибок.

Обновление: я думаю, что это ошибка с предоставлением прав доступа пользователю, некоторые решения для этого:

http://boardreader.com/thread/Microsoft_Exchange_2010_wont_allow_new_M_1w69j__37ad9f8a-cdcf-4d26-9384-00ad1a3d0f91.html
http://blogs.technet.com/b/richardroddy/archive/2010/07/12/exchange-2010-and-the-exchange-trusted-subsystem.aspx

person Hiren    schedule 08.05.2012
comment
Спасибо. Я отмечаю ваш ответ как правильный. Это не решило мою проблему, но вы научили меня тому, как получить больше информации из моего звонка. Результаты таковы: 2012-05-08 15:58:38,227 [DEBUG] (MyProject.Core.Services.ADService) Error: Error calling New-MailContact.Active Directory operation failed on MY-SERVER.Domain.com. This error is not retriable. Additional information: Access is denied. Active directory response: 00000005: SecErr: DSID-031521D0, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0 Похоже, статья в базе знаний — моя вина. - person J_D; 09.05.2012
comment
Согласно вашему обновлению, мы используем Exchange 2007, поэтому я думаю, что это права моей служебной учетной записи, а не права ETS. Еще раз спасибо! - person J_D; 09.05.2012