为什么PSModulePath不是PowerShell变量

时间:2019-12-18 20:02:13

标签: powershell console

我一直在研究这个问题,我一生都无法理解为什么PSModulePath是一个环境变量。有什么合理的理由吗?

为进一步说明,$profile是PowerShell变量。您只需键入$profile即可调用它。这是有道理的。但是,PSModulePath在PowerShell之外绝对没有任何关联或功能,但是,由于某些难以理解的决定,它已被设置为环境变量。即$PSModulePath不能查看,只能通过echo $env:PSModulePath来查看。更加不合理的是,有一个$PSModuleAutoLoadingPreference再次是PowerShell变量,而不是环境变量...

PSModulePath变量仅对于PowerShell为100%。谁能解释这种极其奇怪的设置的原理?

1 个答案:

答案 0 :(得分:3)

因为在装入Powershell会话之前需要$env:PSModulePath。我相信(这里的“为什么”我可能是错的),这是因为在模块本身内定义了多个“内置” cmdlet,并且需要在启动时加载它们。值得注意的是,如果您查看$env:PSModulePath中定义的特定模块目录,即系统模块路径,则会看到以下内容:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

通常,您不想在此处安装模块,而应保持“干净”,例如,让MS管理此目录中的模块。