我想知道是否有一种我可以调用的方法可以告诉我是否有PowerShell snapin已安装。
我知道我可以调用它,可以通过WMI说或写一个PowerShell脚本并将列表返回给C#,但是有一种方法可以在某处执行。
感谢。
答案 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对象。