2013-06-19 43 views
5

Vì vậy, tôi nhập System.Management.Automation dll và tôi đang cố gắng để chạy một lệnh New-Mailbox với paramsC# - Powershell AddPSSnapin Nguyên nhân lỗi

vì vậy tôi sử dụng:

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

Đó là tất cả tiền phạt và dandy .. . nhưng khi tôi đi để chạy các ứng dụng tôi nhận được như sau: 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.

Vì vậy, tôi đã làm một số nghiên cứu trên mạng và thấy rằng tôi cần phải thay đổi Any CPU-x86 làm mục tiêu nền tảng.

Tuy nhiên, khi tôi làm điều đó tôi nhận được một lỗi HTTP Error 503. The service is unavailable.

Tôi gần như tích cực mà tôi phải chạy nó như một quá trình 32 bit để nó có thể sử dụng snapin (mà từ đọc khác có vẻ là những gì snapin đang chạy dưới)

Tôi đã thay đổi nhóm ứng dụng thành Enable 32-bit Applications thành True. Đó là khi tôi nhận được lỗi.

Tôi đã đọc các bài đăng khác ... nhưng, tôi không chắc chắn cách vượt qua điều này Service unavailable.

Tôi đã thử sử dụng một x64 xây dựng và nhận được 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

Bạn đã cài đặt trình quản lý trao đổi 2010 chưa? – urlreader

+0

Có. Tôi thực sự có thể chạy bất kỳ và tất cả các kịch bản từ PowerShell bằng cách chạy 'add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010' trước – BRogers

Trả lời

2

Bạn không sử dụng này tại tất cả:

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

thay vì .... chỉ cần sử dụng một kết nối như sau:

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

Bây giờ hãy chạy lệnh của bạn và bạn đã sẵn sàng.

ghi chú nhanh:

  • Hãy chắc chắn rằng bạn đang ứng dụng được nhắm mục tiêu x64 không Any CPU hoặc x86
  • Nếu bạn đang sử dụng .net 4.5 (hoặc 4) chắc chắn rằng bạn đang bơi ứng dụng được thiết lập đúng (v4.0 không v2.0) và bạn có Enable 32bit apps được đặt thành false
Các vấn đề liên quan