[c#]Powershell,通过服务总线为 Windows 服务器编程: 找到命令,不能加载模块

标签: windows C#
发布时间: 2013/12/5 2:55:43
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

从 C# 代码我想从 powershell 中检索的所有命名空间......(以后更复杂的事情,如创建命名空间)

PowerShell ps = PowerShell.Create();
ps.AddCommand("Import-Module").AddArgument("ServiceBus").Invoke();
var result = ps.AddCommand("Get-SBNamespace").Invoke();

上面的代码给出了以下异常:

'ServiceBus' 模块中找到了 ' Get SBNamespace' 命令但无法加载模块。更多的信息,请运行导入模块 ServiceBus'。

任何人都不会知道如何解决此错误吗?

的当前状态:一些调试后我发现在默认情况下在 PowerShell 对象中加载了没有模块。使用中的代码:

InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new string[]{@"serviceBus"});
PowerShell ps = PowerShell.Create(iss);

若要加载服务总线模块不工作此外为代码:

ps.AddCommand("Import-Module").AddParameter("-Name", "serviceBus").Invoke();

若要导入的服务总线模块不工作在管理员模式下运行 Visual Studio 还没什么区别

提前谢谢

解决方法 1:

你不是说你要使用哪个版本的 Visual Studio。如果它是 VS 2012,当你试图目标平台做了 x 64 时则确保"喜欢 32 位"不检查吗?即使它不会检查尝试检查它,项目配置保存、 清除和再次-保存这为我工作的另一个项目。

更新

已经有人在其他地方显示"喜欢 32 位"作为可选出和未选中时它是实际上活跃的 VS2012 中有 bug。我运行更新 2 和看不到的。但它听起来像你可能会。我建议你直接编辑的.csproj 文件。

虽然"目标平台"设置为"Any CPU",但在解决方案资源管理器中,右击项目名称 (或者,转到项目菜单),选择"卸载项目"。项目文件将关闭,解决方案资源管理器将显示项目名称(不可用) > 项目文件被卸载:

Unloaded Project

再次右键单击项目名称,并选择"编辑项目名称.csproj"。该文件是 XML,主要包括PropertyGroupItemGroup元素。在控制台项目中,第一次 PropertyGroup 通常包含一个平台元素,如果你跟随我上面的说明应改为 AnyCPU。下一步两个 PropertyGroups 通常是为调试和发布配置。如果您已经添加另一种配置,它将有它自己的属性组进行。在每个方面查找读取的元素:

<Prefer32Bit>true</Prefer32Bit>

你应该做的事是一个元素,其内容如下:

<Prefer32Bit>false</Prefer32Bit>

更改它或将它插入 (在每个配置ProjectGroup) 中,将该文件保存并关闭它。回来在解决方案资源管理器中,右键单击该项目并选择"重新加载项目"。让我知道,是否解决了它。您可以确认您的 PowerShell 是现在运行 64 位所得到的结果

[System.IntPtr]::Size

例如

ps.AddScript("[System.IntPtr]::Size");

这将在x 86过程中48 x 64过程中。

我的项目设置,这样,我是能够加载 ServiceBus 使用:

ps.AddCommand("Import-Module").AddArgument("ServiceBus");

希望你也是。

赞助商