Как добавить PSCmdlet или PSSnapin в размещенную среду выполнения Powershell без установки оснастки
Мой сценарий таков.
- Я загружаю свою DLL через веб-интерфейс.
- Я размещаю пространство выполнения PowerShell в приложении ASP.NET.
- I DLL содержит PSCmdlet и хотел бы использовать его.
- PSCmdlet должен быть доступен только в размещенном пространстве выполнения и не должен использоваться в каком-либо внешнем сценарии.
- Приложение не имеет доступа к реестру Windows, поскольку оно работает с ограниченными правами, поэтому я не могу установить PsSnapin.
Можно ли использовать командлет без прохождения процесса установки?
2 ответа
Решение
Если ваш вариант использования прост, то это возможно. Пожалуйста, посмотрите эти вопросы: размещенная PowerShell не может видеть командлеты в той же сборке. Несколько ответов там дают разные способы, выберите тот, который работает лучше, или вам нравится больше.
Если вы используете PowerShell V2, вы можете использовать незарегистрированную оснастку в качестве двоичного модуля.
Import-Module ‹path-to-dll›
добавить -passthru
чтобы получить PSModuleInfo
ссылка, которая описывает модуль.