PowerShell模块自动加载机制是怎样的?
PowerShell模块自动加载的命令检测机制疑问
我们从官方文档了解到,PowerShell在3.0版本引入了模块自动加载功能:
……当你首次运行已安装模块中的任意命令时,PowerShell会自动导入该模块。现在你无需任何设置或配置配置文件,即可使用模块中的命令……
这一功能是通过PSModulePath实现的。
但文档并未解释PowerShell如何在不先加载模块的情况下检测模块中包含哪些命令。
也就是说,当使用Import-Module时,PowerShell会执行.psm1文件中的PowerShell代码,导出所有函数,或者通过Export-Modulemember指定的内容。
然而,自动加载功能必须预先知道某个命令可通过特定模块获取,而无需实际加载该模块。
由于我们的PSModulePath中存在一些行为异常的第三方模块,同时还有少量自行编写的模块需固定在PSModulePath中,我非常希望了解PSModulePath中的文件是如何被处理的。
内容的提问来源于stack exchange,提问作者Martin Ba
相关产品推荐
相关产品推荐

