在 PowerShell 中安装 NuGet 包
NuGet 是来自 .NET framework
的包管理工具,它类似于 PowerShellGet
,支持多个命令和包以与 PowerShell 一起使用的 MSI 包。
例如,我们可能需要 NuGet 来运行特定的脚本。但是,在 Windows PowerShell 中安装 NuGet 包时,我们可能会遇到错误。
本文将了解发生错误的原因以及安装适用于 PowerShell 的 NuGet 提供程序的分步指南。
了解 PowerShell 中的 NuGet 安装挑战
以管理员身份打开 PowerShell。运行命令 Install-Module PowerShellGet -Force
安装 NuGet 包。
当要求确认安装 NuGet 提供程序时,按 Y 键并按 Enter。
Install-Module PowerShellGet -Force
执行后,如果你在安装 NuGet 包时遇到了这些问题,我们可能需要做额外的步骤才能成功安装包。
- 警告:无法从 URI 下载。
- 警告:无法下载可用提供商列表。检查互联网连接。
- 找不到包提供程序
NuGet
。它可能尚未导入。
本文的下一部分将讨论正确安装 NuGet 包的分步过程。
查找 PowerShell 版本
我们必须首先找到系统上运行的 PowerShell 版本。
为此,我们可以使用 GetHost
cmdlet 或导出 $PSVersionTable
变量。
Get-Host | Select-Object Version
$PSVersionTable
输出:
Version
-------
5.1.22000.282
默认情况下,PowerShell 5.1 启用 SSL 和 TLS 以实现安全 HTTP 连接,我们需要在其中升级以安装 NuGet 包。
PowerShell 中的传输层安全协议
要检查系统上支持的安全协议,我们可以使用下面的代码片段。
[Net.ServicePointManager]::SecurityProtocol
输出:
Ssl3, Tls
默认定义的安全协议是 SSL 3.0 和 TLS 1.0。
不幸的是,这两种安全协议都已弃用。因此,在撰写本文时,仅批准了 TLS 1.2 和 TLS 1.3。
正确安装 NuGet 包的解决方法
我们将在系统上启用 TLS 1.2。运行这两个 cmdlet 以设置 .NET
框架强加密注册表项。
然后,重新启动 PowerShell 并检查是否添加了安全协议 TLS 1.2。安装 PowerShellGet 模块。
第一个 cmdlet 在 64 位 .Net
框架(版本 4 及更高版本)上设置强加密。
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
第二个 cmdlet 在 32 位 .Net
框架(版本 4 及更高版本)上设置强加密。
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
重新启动 PowerShell 并检查 TLS 版本现在是否已更新。
[Net.ServicePointManager]::SecurityProtocol
输出:
Tls, Tls11, Tls12
另一种解决方法是手动重新分配安全协议命令。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
输出:
Tls12
安装 TLS 1.2 后,重新运行包安装程序,这一次应该可以完美运行。
Install-Module PowerShellGet -Force
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn