当我在 PowerShell 5 中时,如何防止导入模块加载 PowerShell 核心模块

时间:2021-03-26 17:50:05

标签: powershell powershell-core

我加载了 PowerShell 5(经典 PowerShell)。现在我打电话给Get-Module。这就是结果。

PS C:\Program Files (x86)\MSBuild> Get-Module PackageManagement | Select ModuleType, Version, Name, ModuleBase

ModuleType Version Name              ModuleBase
---------- ------- ----              ----------
    Script 1.4.7   PackageManagement C:\program files\powershell\7\Modules\PackageManagement
    Binary 1.0.0.1 PackageManagement C:\Program Files\WindowsPowerShell\Modules\PackageManagement\1.0.0.1

它首先找到 PowerShell 7 模块。当我在 PowerShell 5 中时,我该如何防止这种情况发生,我只想看到 PowerShell 5。

但据我所知,$env:PSModulePath 是全局的,并且对于两个 PowerShell 都是相似的。

是否有阻止 PowerShell 5 为 7 查找模块的技巧?

1 个答案:

答案 0 :(得分:1)

Powershell v5 包含 powershell 核心。 Powershell 团队明智地决定开放 powershell 和 .net 并使它们跨平台兼容。随着 Powershell v5 的发布,出现了一个非常重要的区别。该项目分为两部分,分别是 Windows Powershell 和 Powershell。

Windows Powershell (PoSh) 上的最后一次真正开发是 v5。 Powershell (pwsh) 构建于跨平台 .net 核心之上,是所有未来 Powershell 开发的所在。

话虽如此,如果您不想使用当前标准编写的模块,请卸载它们。您可以使用 Uninstall-Module -Name $name -Version $version 将其从系统中删除。这将阻止您看到它并将其从您的机器中删除。

现在,如果您想离开它们,但只看到为 Windows Powershell 编写的,请运行此命令(注意:根据需要调整版本号):

Get-Module | Where PowershellVersion -le 5.0.0

我建议您不要这样做,因为了解当前架构可用的内容很重要。但唉,这是你的决定。