Получение информации из текущего состояния (или контекста) PowerShell из C # - PullRequest
4 голосов
/ 03 апреля 2011

Я видел несколько примеров кода, которые позволяют загружать определенные сценарии PowerShell из C #, а затем вызывать определенные функции из сценариев:

// "dot-source my functions"
ps.AddScript(". .\MyFunctions.ps1", $false)
ps.Invoke()

Мой вопрос - теперь, когда это было выполненовсе функции в этом файле были загружены глобально;есть ли способ получить к ним доступ как к объектам из кода C #?

Я бы хотел видеть из кода, какие функции были загружены в глобальный контекст, а затем проанализировать их (см. их список параметрови т. д.).

Возможно ли это вообще?

Спасибо, Лиор

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

Конечно. Есть много способов. Возможно, проще всего вызвать "dir function: \". Теперь, последнее предложение может немного испечь вашу лапшу, но это то, что я бы сделал. Он возвращает коллекцию экземпляров FunctionInfo, в которых имеется множество метаданных.

2 голосов
/ 04 апреля 2011

Другой аналогичный вариант, если вы используете v2, - превратить ваш файл PS1 в PSM1 (модуль PowerShell).Затем из C # вы можете использовать команду

import-module path\to\module\myfunctions.psm1

Оттуда вы можете выполнить команду

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