在 PowerShell 中安裝 NuGet 包

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. 瞭解 PowerShell 中的 NuGet 安裝挑戰
  2. 查詢 PowerShell 版本
  3. PowerShell 中的傳輸層安全協議
  4. 正確安裝 NuGet 包的解決方法
在 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn