我一直在研究这个问题,我一生都无法理解为什么PSModulePath
是一个环境变量。有什么合理的理由吗?
为进一步说明,$profile
是PowerShell变量。您只需键入$profile
即可调用它。这是有道理的。但是,PSModulePath
在PowerShell之外绝对没有任何关联或功能,但是,由于某些难以理解的决定,它已被设置为环境变量。即$PSModulePath
不能查看,只能通过echo $env:PSModulePath
来查看。更加不合理的是,有一个$PSModuleAutoLoadingPreference
再次是PowerShell变量,而不是环境变量...
PSModulePath
变量仅对于PowerShell为100%。谁能解释这种极其奇怪的设置的原理?
答案 0 :(得分:3)
因为在装入Powershell会话之前需要$env:PSModulePath
。我相信(这里的“为什么”我可能是错的),这是因为在模块本身内定义了多个“内置” cmdlet,并且需要在启动时加载它们。值得注意的是,如果您查看$env:PSModulePath
中定义的特定模块目录,即系统模块路径,则会看到以下内容:
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
通常,您不想在此处安装模块,而应保持“干净”,例如,让MS管理此目录中的模块。