PowerShell模块列出了PowerShell终端和C#程序之间的不同



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

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

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

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

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

最新更新