PowerShell模块列表在PowerShell终端和C#程序之间有所不同

时间:2014-01-31 20:49:45

标签: c# .net powershell

我正在尝试在我的C#应用​​程序中使用PowerShell中的MSOnline模块。当我从PowerShell终端中运行Get-Module -ListAvailable时,我可以在模块列表中看到MSOnline。但是,如果我在C#应用程序中运行相同的命令,MSOnline不是列出的模块之一。

我的PSModulePath环境变量确实包含MSOnline模块的路径C:\Windows\system32\WindowsPowerShell\v1.0\Modules。另外,我正在运行以下代码并检查results变量,该变量没有模块。

PowerShell ps = PowerShell.Create();
ps.AddScript("Get-Module -ListAvailable");
var results = ps.Invoke();

任何人都可以解释为什么应用程序没有看到模块,我可以做些什么来修复它?谢谢。

1 个答案:

答案 0 :(得分:1)

在绝大多数情况下,模块已注册或仅适用于32位或64位PowerShell。你是如何编译C#程序的?如果它是AnyCPU,它可能运行64位,并且不会看到仅32位模块。尝试在x86和x64之间切换C#程序,看看哪个可以找到该模块。