当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 安装模块错误:无法从 URI 下载

作者:精品下载站 日期:2024-12-14 23:23:23 浏览:15 分类:玩电脑

PowerShell 安装模块错误:无法从 URI 下载


在早期的 Windows 版本(Windows 8.1、Windows Server 2012 R2)中,尝试使用 NuGet 和 Install-Module cmdlet 从 PowerShell 库安装模块时,您可能会看到无法从 URI 下载错误。

例如,安装 Exchange Online PowerShell 模块 (EXOv2) 时,您可能会看到以下 PowershellGet 和 NuGet 提供程序下载错误:

Install-Module -Name ExchangeOnlineManagement -Force -Scope AllUsers

[玩转系统] PowerShell 安装模块错误:无法从 URI 下载

警告:无法从 URI 下载 - powershell 安装模块

WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Install-PackageProvider : No match was found for the specified search criteria for the provider 'NuGet'. The package provider requires 'PackageManagement' and 'Provider' tags. Please check if the specified package has the tags.
CategoryInfo : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-PackageProvider], Exception + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider
Unable to find package provider 'NuGet'. It may not be imported yet. Try 'Get-PackageProvider -ListAvailable'.
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvider], Exception
+ FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageProvider
+ CategoryInfo : InvalidOperation: (:) [Install-Module], InvalidOperationException
+ FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module

通过 NuGet 安装任何 PowerShell 模块时都会出现相同的错误,无论是 AzureAD、VMware PowerCLI、PSWindowsUpdate、SecretManagement、SQLServer 等。

在这种情况下,您将在事件查看器 -> 系统日志中看到事件 ID 36874Schannel 错误。

A TLS 1.2 connection request was received from a remote client application, but none of the cipher suites supported by the client application are supported by the server. The TLS request has failed.

当 PowerShell 尝试使用旧版 TLS/SSL 协议而不是当前的 TLS 1.2 连接到 NuGet 存储库时,会出现此问题。

检查计算机上安装的 PowerShell 版本:

host|select version

如果您的 PowerShell 版本是 5.1.14xx 或更早版本,请更新它。

默认情况下,早期的 PowerShell 版本使用 SSL 3.0 和 TLS 1.0 建立与存储库的安全 HTTPS 连接。

要显示用于连接的协议列表,请运行以下命令:

[Net.ServicePointManager]::SecurityProtocol]
Ssl3, Tls

[玩转系统] PowerShell 安装模块错误:无法从 URI 下载

在我们的示例中,PowerShell 使用旧版 SSL 3.0、TLS 1.0 或 TLS 1.1。 Microsoft 存储库要求客户端使用 TLS 1.2 或 TLS 1.3。

要使用 TLS 1.2 协议进行连接,您需要运行以下命令:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

[玩转系统] PowerShell 安装模块错误:无法从 URI 下载

然后,您可以使用 Install-Module 安装 PowerShell 模块。

为了避免每次手动更改 HTTPS 连接协议版本,您可以将 TLS 1.2 设置为 .NET Framework 4.5(及更高版本)中的默认连接协议。为此,您需要使用以下命令对注册表进行以下更改:

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

重新启动 PowerShell 控制台。显示可用协议列表:

[Net.ServicePointManager]::SecurityProtocol
Tls, Tls11, Tls12

现在,TLS 1.2 将始终用于 PowerShell 连接,您可以使用 NuGet 安装任何模块。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯