来自.NET调用MsmqQueueManager的PowerShell

来自.NET调用MsmqQueueManager的PowerShell,powershell,Powershell,我有一个简单的PowerShell脚本,我正试图使用PowerShell.Create方法从.NET(vb.NET)调用它来创建管道。该脚本只调用Set-MsmqQueueManager。该代码在我的开发计算机上运行良好,但是,在Windows Server 2012 R2服务器上,我将其部署到Powershell,并在错误流中返回以下错误: System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Msmq.Runtime.Interop.dll”或其依

我有一个简单的PowerShell脚本,我正试图使用PowerShell.Create方法从.NET(vb.NET)调用它来创建管道。该脚本只调用Set-MsmqQueueManager。该代码在我的开发计算机上运行良好,但是,在Windows Server 2012 R2服务器上,我将其部署到Powershell,并在错误流中返回以下错误:

System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Msmq.Runtime.Interop.dll”或其依赖项之一。动态链接库(DLL)初始化例程失败。(HRESULT中的异常:0x8007045A)文件名:Microsoft.Msmq.PowerShell.Commands.SetMSMQQueueManagerCommand.BeginProcessing()中的Microsoft.Msmq.Runtime.Interop.dll,System.Management.Automation.CommandProcessing()中的SetMSMQQueueManagerCommand.BeginProcessing()

我尝试过各种导入模块语句,我尝试过包括System.Messaging.dll,甚至使用它来添加类型,但到目前为止没有任何效果。我可以以这种方式运行其他脚本,而不会出现任何问题


如果您有任何见解,将不胜感激。

请先猜猜。。。在黑暗中拍摄。。。您的测试系统和服务器是不同的体系结构吗?可能dll仅在x86 PowerShell中可用,而您正在运行x64?谢谢。。。我可以在服务器上使用32位或64位PowerShell手动运行脚本,而不会出现问题。我的应用程序正在使用AnyCPU编译。所以我不认为会是这样。但为了彻底了解,我尝试以64位模式编译应用程序-同样的错误。2012服务器上的dll(完整路径)位于哪里?必须使用绝对路径,或者路径是path环境变量的一部分。system32在x86和x64环境中也有不同的含义。当然,当我通过Powershell运行脚本(其中只包含一个命令)时,它不需要任何特殊的dll或模块,只需工作即可。但是当我从.NET应用程序运行它时,它抛出了这个错误。我确实在SXS文件夹中找到了有问题的dll,并尝试将其放在应用程序文件夹中,这是相同的错误。请原谅,我不想让您误入歧途,但我打赌这两个位置都不是该系统上Path环境变量的一部分