Как программно определить, какие оснастки PowerShell установлены - PullRequest
1 голос
/ 01 сентября 2009

Я хотел бы знать, есть ли метод, который я могу вызвать, который может сказать мне, если PowerShell оснастка установлена.

Я знаю, что могу позвонить, вероятно, сделать это, скажем, через WMI или написать скрипт PowerShell и вернуть список в C #, но есть ли способ сделать это где-нибудь.

Спасибо.

1 Ответ

2 голосов
/ 01 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...