Я не уверен, является ли это оптимальным способом сделать это, но взглянем на конфигурацию пространства по умолчанию, например ::100100
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.