2012-05-08 1 views
1

New-MailContact cmdlet을 호출하고 Active Directory에 연락처를 만들어야하는 응용 프로그램이 있습니다. 나는 지금까지 얻은 기술 기사 몇 가지를 따라 갔지만 여전히 작동하지 않습니다.C-code에서 New-MailContact cmdlet을 실행할 때 연락처가 생성되지 않습니다.

사용중인 서비스 계정이 this TechNet page을 기반으로하는 적절한 인증임을 확인했습니다. PowerShell에서 cmdlet을 찾아 호출 할 수 있으며 오류가 표시되지 않습니다.

그러나 실행 후 내 OU를 검사하면 내 연락처가 만들어지지 않았습니다. 용의자 일 수 있다고 생각되는 this 기술 자료 문서를 찾았으나 cmdlet이 호출 후 오류를 반환하지 않기 때문에 문제가 해결 될 것이라고 확신 할 수 없습니다. 여기

내가 뭐하는 거지의 조각입니다 :

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

나는 예외를 얻을하지 않습니다 내 결과 목록은 파이프 라인 호출에서 비어 있습니다. 제가 누락 된 것이 있습니까? AD에서 연락처를 만들 때 권한으로 인해 cmdlet이 실패하면 pipeLine.Invoke()에서 결과 집합의 일종의 오류가 발생할 것으로 예상되지 않습니까 ??

PowerShell을 실행하는 데 익숙하지 않으므로 KB 문서 외에 다른 문제가있는 경우 알려 주시기 바랍니다. 나는 이것이 사용자에게 적절한 권한을주는 에로 생각 , 일부 :이

업데이트에 오류가있는 경우

답변

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

+0

감사 너. 나는 당신의 대답을 옳은 것으로 표시하고 있습니다. 그것은 내 문제를 해결하지 못했지만 내게 전화 한 내용을 자세히 알려주는 법을 가르쳐 주셨습니다. 결과는 다음과 같습니다. '2012-05-08 15 : 58 : 38,227 [DEBUG] (MyProject.Core.Services.ADService) 오류 : MY-SERVER.Domain.com에서 New-MailContact.Active Directory 작업을 호출하는 동안 오류가 발생했습니다. 이 오류는 다시 검색 할 수 없습니다. 추가 정보 : 액세스가 거부되었습니다. Active Directory 응답 : 00000005 : SecErr : DSID-031521D0, 4003 (INSUFF_ACCESS_RIGHTS) 문제, 데이터 0 KB 문서가 내 범인 것 같습니다. –

+0

업데이트에 따라 Exchange 2007이 사용되므로 ETS와는 달리 서비스 계정 권한이 있다고 생각합니다. 다시 감사합니다! –

관련 문제