在 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