Как добавить PSCmdlet или PSSnapin в размещенную среду выполнения Powershell без установки оснастки

Мой сценарий таков.

  • Я загружаю свою DLL через веб-интерфейс.
  • Я размещаю пространство выполнения PowerShell в приложении ASP.NET.
  • I DLL содержит PSCmdlet и хотел бы использовать его.
  • PSCmdlet должен быть доступен только в размещенном пространстве выполнения и не должен использоваться в каком-либо внешнем сценарии.
  • Приложение не имеет доступа к реестру Windows, поскольку оно работает с ограниченными правами, поэтому я не могу установить PsSnapin.

Можно ли использовать командлет без прохождения процесса установки?

2 ответа

Решение

Если ваш вариант использования прост, то это возможно. Пожалуйста, посмотрите эти вопросы: размещенная PowerShell не может видеть командлеты в той же сборке. Несколько ответов там дают разные способы, выберите тот, который работает лучше, или вам нравится больше.

Если вы используете PowerShell V2, вы можете использовать незарегистрированную оснастку в качестве двоичного модуля.

Import-Module ‹path-to-dll›

добавить -passthru чтобы получить PSModuleInfo ссылка, которая описывает модуль.

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