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
наслаждаться