2013-06-19 17 views
5

Więc import dll System.Management.Automation i próbuję uruchomić polecenie New-Mailbox z paramsC# - PowerShell AddPSSnapin powoduje błędy

więc używam:

RunspaceConfiguration config = RunspaceConfiguration.Create(); 
PSSnapInException psEx = null; 
config.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", out psEx); 

To wszystko cacy .. . ale kiedy idę do uruchomienia aplikacji pojawia się następujący: Cannot load Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because of the following error: The type initializer for 'Microsoft.Exchange.Data.Directory.Globals' threw an exception.

Więc zrobiłem rozeznanie w Internecie i okazało się, że muszę zmienić Any CPU do x86 jako cel platformy.

Jednak, gdy to zrobić otrzymuję HTTP Error 503. The service is unavailable. błąd

jestem prawie pewny, że muszę go uruchomić jako proces 32-bitowe, dzięki czemu można go używać przystawki (co z drugiej czytania wydaje się być co snapin działa)

Zrobiłem zmienić pulę aplikacji na Enable 32-bit Applications na True. I wtedy pojawia się błąd.

Czytałem inne posty ... ale, nie jestem pewien, jak ominąć ten Service unavailable rzecz.

Próbowałem za pomocą kompilacji x64 i dostać Could not load file or assembly 'EmailAdminWeb2' or one of its dependencies. An attempt was made to load a program with an incorrect format.

+0

Czy zainstalowałeś powłokę zarządzania wymianą 2010? – urlreader

+0

Tak. Mogę uruchomić wszystkie skrypty z powershell, uruchamiając najpierw 'add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010' – BRogers

Odpowiedz

2

Nie korzystać z tego w ogóle:

config.AddPSSnapIn("your snapin here", out psEx); 

zamiast .... po prostu korzystać z połączenia w następujący sposób:

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri("http://yourdomainhere/Powershell/Microsoft.Exchange"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", PsCreds); 
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo); 

Teraz uruchom swoje polecenia i jesteś gotowy.

Szybkie notatki:

  • upewnij się, że aplikacja jest kierowana x64 nie Any CPU lub x86
  • Jeśli używasz .NET 4.5 (lub 4) upewnij się, że pule aplikacji są ustawione poprawnie (v4.0 nie v2.0) i masz Enable 32bit apps ustawioną na false
Powiązane problemy