如何在不安装管理单元的情况下将 PSCmdlet 或 PSSnapin 添加到托管 Powershell 运行时
我的场景如下。
- 我正在通过 Web UI 上传我的 dll。
- 我在 ASP.NET 应用程序中托管 PowerShell 运行空间。
- 我 DLL 包含 PSCmdlet 并且想要使用它。
- PSCmdlet 只需要在托管运行空间内可访问,而不需要在 用于任何外部场景。
- 该应用程序无法访问 Windows 注册表,因为它以有限的权限运行,因此我无法安装 PsSnapin。
我是否可以在不完成安装过程的情况下使用命令行开关?
My scenario is as follows.
- I am uploading my dll through web UI.
- I am hosting a PowerShell runspace in an ASP.NET application.
- I The DLL contains the PSCmdlet and would like to make use of it.
- The PSCmdlet only needs to be accessible within the hosted runspace and does not need to be
used in any external scenario. - The application does not have access to the windows registry as it runs with limited privileges, so I cannot install the PsSnapin.
Is it possible for me to use the commandlet without going through the installation process?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您的用例很简单,那么这是可能的。请参阅以下问题:托管 PowerShell 无法在同一程序集中看到 Cmdlet。那里的几个答案提供了不同的方法,选择一种效果更好或更喜欢的方法。
If your use case is straightforward then it is possible. Please see these question: Hosted PowerShell cannot see Cmdlets in the same Assembly. Several answers there provide different ways, choose one that works better or you like more.
如果您使用 PowerShell V2,则可以使用未注册的管理单元作为二进制模块。
添加
-passthru
以获取描述模块的PSModuleInfo
引用。If you use PowerShell V2 you can use an unregistered snapin as a binary module.
add a
-passthru
to get thePSModuleInfo
reference which describes the module.