2016-04-06 17 views
1

私のマシンにインストールされているMicrosoft.Exchange.Management.PowerShell.E2010とC#プロジェクトを介してやりとりします。C#Powershell - Exchange管理{"値はnullにはできません。パラメータ名:serverSettings"}

ローカルマシンはWindows Server 2012 R2 Standardで、ロールアップアップデート14がインストールされたExchange Server 2010 SP3がインストールされています。

私は(古いバージョンにダウングレードすることはできません)

 WSManConnectionInfo connectionInfo = new WSManConnectionInfo(); 

     connectionInfo.OperationTimeout = 4 * 60 * 1000; // 4 minutes. 
     connectionInfo.OpenTimeout = 1 * 60 * 1000; // 1 minute. 

     Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo); 
     runspace.Open(); 
     using (PowerShell ps = PowerShell.Create()) 
     { 
      ps.Runspace = runspace; 

      ps.AddCommand("Add-PsSnapIn"); 
      ps.AddArgument("Microsoft.Exchange.Management.PowerShell.E2010"); 

      var results = ps.Invoke(); 

      try 
      { 
       ps.AddCommand("Get-MailBox"); 

       results = ps.Invoke(); 
      } 
      catch (Exception e) 
      { 

      } 
     } 
     runspace.Close(); 
  • を4.5の.NET Frameworkを使用している私は(私のローカルマシン上に標的化さ)リモートシェルセッションを開きます。
  • 交換コマンドにアクセスできるように、Exchange管理PsSnapInを追加します。
  • 最後にExchange管理コマンドを実行します。

\!/問題はresults = ps.Invoke();がメッセージ"Value cannot be null.\r\nParameter name: serverSettings"System.Management.Automation.RemoteExceptionをスローし、最後のステップです。

皆さん、ありがとうございますか?

ありがとうございます。

答えて

1

私はここ数日間、これと戦ってきました。私はこの質問が数ヶ月前だと知っていますが、私は最終的に見つけた解決策を共有すると思いました。 .configファイルでは、startupタグに属性をtrueに設定する必要があります。これと同じように:これを使用して

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/> 
</startup> 

、私は正常に.NET 4.6.2をターゲットにしながら、Get-Mailboxコマンドを実行することができました。

+0

ありがとう、私は試してみてください! –

関連する問題