powershell: запуск кода при импорте модуля

Я разработал модуль powershell в C#, реализовал несколько команд.

Как я могу выполнить код C# в этом модуле, когда он импортирован Powershell?

3 ответа

Создайте манифест модуля с полем ModuleToProcess (или RootModule в V3), для которого задан файл PSM1, а для NestedModules - DLL, например:

RootModule         = 'Pscx.psm1'
NestedModules      = 'Pscx.dll' 

Это то, что мы делаем в расширениях сообщества PowerShell, где мы делаем то же самое - сначала запускаем скрипт. Вы можете увидеть наш файл PSD1 здесь.

Я также пишу бинарный cmdLet в.NET. Я обнаружил, что если вы создаете класс, который наследуется по крайней мере от DriveCmdletProvider, этот класс может реализовать InitializeDefaultDrives.

Этот метод будет вызываться при вызове import-модуля в вашей DLL.

Вы можете использовать эту "функцию", чтобы поддерживать некоторые данные сеанса (или сеанса модуля).

Это очень простое решение, просто замените код внутри {} на ваш исходный код. (мой тест ниже)

add-type 'public class c {public const string s = "Hello World";}'; [c]:: s

наслаждаться

Другие вопросы по тегам