如何检测 MSOnline PowerShell 模块是否可用 - 通过 C#
How to detect if MSOnline PowerShell module is available - via C#
我正在尝试使用 C# 找出 MSOnline PowerShell 模块是否可用 OS。
乍一看-没什么困难。我们可以从 C# 调用 PowerShell 方法。但出于某种原因,我尝试使用的所有代码片段都无法通过 MSOnline 模块获得结果。
例如,我们使用方法 http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C 并传递如下命令:
Get-Module -ListAvailable -Name(这里是名字)
所以如果我们 运行 它用于 TLS 模块 - 它工作正常。在下图中,我们可以看到它在 C# 控制台应用程序中的工作方式,在右侧 - 它在 PowerShell 中的外观。看起来很公平。
但是如果我们尝试查找 MSOnline 模块,一切都会改变:
如我们所见 - C# 程序没有给出任何结果,而 PowerShell 本身向我们显示模块可用。
我真的很困惑。我认为这与我的电脑有关,但我检查了一些不同的电脑,包括 Server 2012 R2。结果是一样的——即使我们使用与 PS.
中完全相同的命令,也无法通过 C# 查找该模块
有人遇到过这样的问题吗?如果是 - 如果存在 MSOnline PS 模块,可以通过 C# 检测什么解决方案。
谢谢。
实际上我找到了解决我自己问题的方法:
您需要确保您的程序和模块都是 32 位或 64 位的。
MSOnline 是 运行 x64,如果您的程序以 32 位系统为目标或具有任何 CPU 并在运行时运行 32 位 - 您将得到零结果。
就是这样。
我正在尝试使用 C# 找出 MSOnline PowerShell 模块是否可用 OS。
乍一看-没什么困难。我们可以从 C# 调用 PowerShell 方法。但出于某种原因,我尝试使用的所有代码片段都无法通过 MSOnline 模块获得结果。
例如,我们使用方法 http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C 并传递如下命令:
Get-Module -ListAvailable -Name(这里是名字)
所以如果我们 运行 它用于 TLS 模块 - 它工作正常。在下图中,我们可以看到它在 C# 控制台应用程序中的工作方式,在右侧 - 它在 PowerShell 中的外观。看起来很公平。
但是如果我们尝试查找 MSOnline 模块,一切都会改变:
如我们所见 - C# 程序没有给出任何结果,而 PowerShell 本身向我们显示模块可用。
我真的很困惑。我认为这与我的电脑有关,但我检查了一些不同的电脑,包括 Server 2012 R2。结果是一样的——即使我们使用与 PS.
中完全相同的命令,也无法通过 C# 查找该模块有人遇到过这样的问题吗?如果是 - 如果存在 MSOnline PS 模块,可以通过 C# 检测什么解决方案。
谢谢。
实际上我找到了解决我自己问题的方法:
您需要确保您的程序和模块都是 32 位或 64 位的。
MSOnline 是 运行 x64,如果您的程序以 32 位系统为目标或具有任何 CPU 并在运行时运行 32 位 - 您将得到零结果。
就是这样。