代码之家  ›  专栏  ›  技术社区  ›  scope_creep

如何通过编程确定安装了什么PowerShell管理单元

  •  1
  • scope_creep  · 技术社区  · 15 年前

    我想知道是否有一个方法可以调用,它可以告诉我PowerShell 已安装管理单元。

    我知道我可以调用它,比如通过wmi或者写一个powershell脚本,并将一个列表返回到c,但是是否有一个方法可以在某个地方执行它。

    谢谢。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Keith Hill    14 年前

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

    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
    

    或者你可以调用 Get-PSSnapin -Registered 从C代码并处理返回的pssnapininfo对象。