我知道我可以限制从导入的模块导出的命令,如下所示:
Import-Module C:\...\MyModule
或 Import-Module C:\...\MyModule\MyModule.psd1
然后我可以在.psd1中使用CmdletsToExport。
但是,如果我从 .dll 导入模块怎么办?
Import-Module C:\...\MyModule.dll
如何限制导出的命令(cmdlet)?
我们的 .dll 中有一些 cmdlet 在默认情况下应该“隐藏”,并且我们希望仅当某些环境变量具有某些值时才允许调用它们。
我想不出基于环境变量的解决方案,但如果执行命令使“隐藏”cmdlet可见是可以接受的,您可以采取以下方法:
围绕包含 cmdlet 的
*.dll
创建一个成熟的、基于目录的模块,通过其模块清单 (.psd1
),您可以限制导入时调用者可以使用哪些 cmdlet。
如果您想(稍后或替代)加载 all cmdlet,请直接在
Import-Module -Force
上运行 *.dll
,这将导入所有 cmdlet(所有公共 Cmdlet
和/或 PSCmdlet
派生类) ).