2012-05-08 3 views
1

(特に)New-MailContactコマンドレットを呼び出してActive Directoryに連絡先を作成する必要があるアプリケーションがあります。私はこれまで数多くの技術記事を読んできましたが、それでもまだ機能していません。C#コードからNew-MailContactコマンドレットを実行すると連絡先が作成されない

使用しているサービスアカウントがthis TechNet pageに基づく適切な認証を持っていることを確認しました。私はpowershellからコマンドレットを見つけて呼び出すことができ、エラーは発生しません。

実行後、私は私のOUを検査し、私の連絡先は作成されませんでした。疑わしいと思われるthis KBの記事が見つかりましたが、コマンドレットが呼び出し後にエラーを返さないため、これで問題が解決されるとは限りません。ここで

は私がやっているものの抜粋です:

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で連絡先を作成するときにアクセス許可が原因でコマンドレットが失敗した場合、結果セットに何らかのエラーが発生することはありませんか?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(後にこのコードを入れ、そこ

更新に誤りがあるかどうかを確認してください:私はいくつかの、これはユーザーに権利許可を与えるとERROだと思う は、このためのソリューション:

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)エラー:New-MailContact.Activeディレクトリ操作を呼び出すときのエラーがMY-SERVER.Domain.comで失敗しました。このエラーはretriableではありません。追加情報:アクセスは拒否されました。 アクティブディレクトリの応答:00000005:SecErr:DSID-031521D0、問題4003(INSUFF_ACCESS_RIGHTS)、データ0' KBの記事が私の原因です。 –

+0

アップデートごとに、私たちはExchange 2007を使用しています。だから、ETSではなく、サービスアカウントの権利だと思います。ありがとうございました! –

関連する問題