PowerShell 7 使用 Chocolatey 作为 PackageManager

Moo*_*ose 4 powershell package-managers package chocolatey

PowerShell 5 和 7 在 PackageManager 方面仍然不同。
Chocolatey 似乎尚未“集成”,我无法像在 PowerShell 5 中那样在 PowerShell 7 中使用 Chocolatey。

我已经按照他们网站所说的方式安装了 Chocolatey,但这让我可以使用 Chocolatey 来启动我的 choco 命令。

如何在 PowerShell 7 中配置 Chocolatey,以便可以像在 PowerShell 5 中一样使用它。
Find-Package -ProviderName Chocolatey -Name <packagename>

mkl*_*nt0 6

  • 从 PowerShell [Core] 7 开始,您似乎无法使用Chocolatey作为 PowerShellPackageManagement模块的提供程序,这意味着您无法使用 和 发现或安装 ChocolateyFind-Package软件包Install-Package

  • 然而,通过CLI直接使用 Chocolatey在 PowerShell [Core] 中工作得很好choco.exe*.exe只要系统上存在其运行时,文件就会运行,无需与 PowerShell 的运行时相同)。

继续阅读背景信息:


看起来实现 PackageManagement 提供程序需要以仅支持 .NET Framework (FullCLR) 的方式访问 Chocolatey API,而不支持 .NET Core(PowerShell [Core] 构建于其上)[1]引用Chocolatier的自述文件,这是社区提供的官方提供商从未发布的原型的替代方案:

目前,Chocolatier 适用于 Full CLR。CoreClr (...) 不支持它。主要原因是当前版本的choco.exe似乎还不支持CoreClr。

至于在Windows PowerShell上的使用:

许多年后,Chocolatey PackageManagement 提供程序的官方原型(仅限 Windows PowerShell)尚未实现;以下是文档内容,检索于 2020 年 4 月 13 日(已添加重点):

Chocolatey为 Windows 10/Windows Server 2016 上的内置包管理器提供了一个原型提供程序,该提供程序是 Microsoft 不久前创建的。它的功能并不完整,并且可能存在安全问题。如果您想将 Chocolatey 与 PackageManagement 一起使用,我们建议使用 ChocolateyGet,在正式实现之前,这是一个很好的桥梁。尚未定义预计到达时间

笔记:

  • 前面提到的Chocolatier是基于ChocolateyGet构建的,在撰写本文时似乎是维护更积极的项目。

  • 最近有一位社区成员为官方原型提交了一个待定的PR,但尚未受到任何关注;而且,它还没有完成;有关完整的背景故事,请参阅此 GitHub 问题


[1] 如果您知道详细信息,请告诉我们。