如何以编程方式确定安装的PowerShell管理单元

时间:2009-09-01 15:34:08

标签: c# powershell

我想知道是否有一种我可以调用的方法可以告诉我是否有PowerShell snapin已安装。

我知道我可以调用它,可以通过WMI说或写一个PowerShell脚本并将列表返回给C#,但是有一种方法可以在某处执行。

感谢。

1 个答案:

答案 0 :(得分:2)

我不确定这是否是最佳方式,但请查看默认的运行空间配置,例如:

using System.Linq;
using System.Management.Automation;
using System.Management.Automation.Runspaces;

var cmdlets = Runspace.DefaultRunspace.RunspaceConfiguration.Cmdlets;
var snapins = (from cmdlet in cmdlets
              select new { cmdlet.PSSnapin.Name }).Distinct();

手工编制,所以YMMV。

要查看安装了哪些管理单元而不是已加载,请枚举此注册表项的内容:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns

或者您可以从C#代码中调用Get-PSSnapin -Registered并处理返回的PSSnapInInfo对象。