2016-04-06 1 views
1

Я хочу взаимодействовать с Microsoft.Exchange.Management.PowerShell.E2010, который установлен на моей машине через проект C#.C# Powershell - Управление Exchange {"Значение не может быть пустым. R nПараметр: serverSettings"}

Установлена ​​локальная машина Windows Server 2012 R2 Standard и Exchange Server 2010 с пакетом обновления 3 (SP3) с накопительным обновлением 14.

Я использую 4.5 .NET Framework (Откат к старой версии не представляется возможным)

 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(); 
  • открыть сеанс удаленной оболочки (целенаправленные на моей локальной машине).
  • Добавьте управление Exchange PsSnapIn, чтобы иметь доступ к командам обмена.
  • Наконец, я выполняю команду управления Exchange.

\!/Проблема на последнем шаге, results = ps.Invoke(); бросает System.Management.Automation.RemoteException с сообщением "Value cannot be null.\r\nParameter name: serverSettings".

У вас есть идеи?

Спасибо за ваше время.

ответ

1

Я боролся с этим последние пару дней. Я знаю, что этот вопрос несколько месяцев, но я думал, что разделю решение, которое я наконец нашел. В вашем .config вам нужен атрибут , установленный в true на теге startup. Как так:

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

Используя это, я был успешно в состоянии выполнить команду Get-Mailbox во время ориентации .NET 4.6.2.

+0

Спасибо, я могу попробовать! –

Смежные вопросы