2016-04-06 17 views
1

Makinemde bir C# projesi aracılığıyla yüklü olan Microsoft.Exchange.Management.PowerShell.E2010 ile etkileşime geçmek istiyorum.C# Powershell - Exchange yönetimi {"Değer boş olamaz. R nParametre adı: serverSettings"}

Yerel makinem Windows Server 2012 R2 Standard ve Rollup Update 14 yüklü Exchange Server 2010 SP3 yüklüdür. Ben 4.5 .NET Framework kullanıyorum

 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(); 
  • (benim yerel makinede hedeflenen) uzak bir kabuk oturumu açın (eski sürümüne geçişinizi mümkün değildir).
  • Değişim komutlarına erişmek için Exchange yönetimi PsSnapIn öğesini ekleyin.
  • Son olarak Exchange yönetim komutumu çalıştırıyorum.

\!/Sorun results = ps.Invoke(); mesajla "Value cannot be null.\r\nParameter name: serverSettings" ile System.Management.Automation.RemoteException atar, son adımda olduğunu.

Herhangi bir fikrin var mı?

Zaman ayırdığınız için teşekkür ederiz.

cevap

1

Son birkaç gündür bununla savaşıyorum. Bu sorunun birkaç aylık olduğunu biliyorum, ama sonunda bulduğum çözümü paylaşacağımı düşündüm. .config dosyanızda, startup etiketinde özniteliğine true olarak ayarlamanız gerekir. böylece gibi: Bu kullanma

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

, başarıyla .NET 4.6.2 hedeflerken aynı zamanda Get-Mailbox komutu çalıştırmak başardı.

+0

Teşekkür ederim, deneyebilirim! –