0

我正在尝试在 Web 服务中为 Microsoft Exchange 运行一些 Powershell 脚本。下面编写的代码在从控制台应用程序运行时可以正常工作,但是当我将其移动到 Web 服务项目并调用 Web 方法时,它会在调用 AddPSSnapIn 时出错。知道为什么吗?我在 Windows Server 2008 R2 64 位机器上运行它。目标平台已从任何 CPU 更改为 x64,但没有任何运气。

    Dim rsConfig As RunspaceConfiguration = RunspaceConfiguration.Create()
    Dim snapInException As PSSnapInException = Nothing
    Dim info As PSSnapInInfo = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", snapInException)  <-- throws an error

    ' create Powershell runspace and open
    Dim MyRunSpace As Runspace = RunspaceFactory.CreateRunspace(rsConfig)
    MyRunSpace.Open()

    ERROR- System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Management.Automation.PSArgumentException: No snap-ins have been registered for Windows PowerShell version 2." 
4

1 回答 1

0

问题是我的 Web 服务是在 Visual Studio 开发服务器上创建的,而不是本地(或其他)服务器,并且安全/权限必须更严格。在为我的 Web 服务项目选择属性并转到 Web 选项卡后,我选择了“使用本地 IIS Web 服务器”并创建了一个虚拟目录。在 IIS 管理器中,我为我的 Web 服务启用了 Windows 身份验证,这解决了问题!

于 2013-02-15T15:56:46.833 回答