【问题标题】:C# - Powershell AddPSSnapin Causes errorsC# - Powershell AddPSSnapin 导致错误
【发布时间】:2013-06-19 20:06:44
【问题描述】:

所以,我导入了System.Management.Automation dll,并尝试使用参数运行New-Mailbox 命令

所以我使用:

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

这一切都很好,花花公子......但是当我去运行应用程序时,我得到以下信息: 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.

所以,我在网上做了一些研究,发现需要将平台目标从Any CPU改为x86

但是,当我这样做时,我会收到 HTTP Error 503. The service is unavailable. 错误

我几乎肯定我必须将它作为 32 位进程运行,以便它可以使用管理单元(从其他阅读来看,管理单元似乎正在运行)

我确实将应用程序池更改为 Enable 32-bit ApplicationsTrue。当我收到错误消息时。

我已经阅读了其他帖子...但是,我不确定如何通过 Service unavailable 这个事情。

我尝试使用 x64 构建并获得 Could not load file or assembly 'EmailAdminWeb2' or one of its dependencies. An attempt was made to load a program with an incorrect format.

【问题讨论】:

  • 您是否安装了 Exchange Management Shell 2010?
  • 是的。我实际上可以通过首先运行 add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 从 powershell 运行任何和所有脚本

标签: c# powershell-2.0 x86-64 system.management


【解决方案1】:

你根本不用这个:

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

相反....只需使用如下连接:

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

现在运行您的命令,一切顺利。

快速笔记:

  • 确保您的应用定位到 x64 而不是 Any CPUx86
  • 如果您使用的是 .net 4.5(或 4),请确保您的应用程序池设置正确(v4.0 而不是 v2.0)并且您已将 Enable 32bit apps 设置为 false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 2019-04-16
    • 2020-04-01
    相关资源
    最近更新 更多