2016-04-06 8 views
1

ich mit Microsoft.Exchange.Management.PowerShell.E2010 zu interagieren möchten, die auf meinem Rechner über ein C# Projekt installiert ist.C# Powershell - Exchange-Verwaltungs { „Der Wert darf nicht null sein r nParameter Name: Serversettings.“}

Mein lokaler Rechner ist ein Windows Server 2012 R2 Standard und Exchange Server 2010 SP3 mit dem Update Rollup 14 installiert ist.

ich das .NET Framework 4.5 bin mit (zu einer älteren Version Herabstufung ist nicht möglich)

 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(); 
  • Ich öffne eine Remote-Shell-Sitzung (auf meinem lokalen Rechner targetted). In
  • der Exchange-Verwaltungs PSSnapin, um den Zugang zu den Wechselbefehle haben.
  • Schließlich führe ich meinen Exchange-Verwaltungsbefehl aus.

\!/Das Problem ist im letzten Schritt, results = ps.Invoke(); ein System.Management.Automation.RemoteException mit der Meldung wirft "Value cannot be null.\r\nParameter name: serverSettings".

Haben Sie Jungs eine Idee?

Vielen Dank für Ihre Zeit.

Antwort

1

Ich habe für die letzten paar Tage mit diesem Kampf. Ich weiß, dass diese Frage ein paar Monate alt ist, aber ich dachte, ich würde die Lösung teilen, die ich schließlich gefunden habe. In Ihrem .config, müssen Sie das Attribut auf true auf dem startup-Tag. Wie so:

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

diese verwenden, war ich erfolgreich in der Lage einen Get-Mailbox Befehl auszuführen, während 4.6.2 .NET-Targeting.

+0

Danke, ich könnte es versuchen! –