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

[玩转系统] 无法安装 PowerShell 的 NuGet 提供程序

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

无法安装 PowerShell 的 NuGet 提供程序


在安装 EXO V2 模块之前,我们需要安装 PowerShellGet 模块。问题是我们无法安装 NuGet 提供程序并且显示一些错误。警告无法从 URI 下载,无法下载可用提供商列表。出现错误后,没有安装。在本文中,您将了解发生这种情况的原因以及为 PowerShell 安装 NuGet 提供程序的解决方案。

无法安装 PowerShell 的 NuGet 提供程序

以管理员身份运行 PowerShell。运行命令Install-Module PowershellGet -Force。当要求安装 NuGet 提供程序时,按 Y 并按 Enter 键。

[PS] C:\>Install-Module PowershellGet -Force

NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\administrator.EXOIP\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

Y 并按 Enter 后,输出会向我们发出以下警告。

  • 警告:无法从 URI 下载。

  • 警告:无法下载可用提供商的列表。检查您的互联网连接。

  • 无法找到包提供程序“NuGet”。可能还没有导入。

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.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet.0.0.1\PSModule.psm1:7405 char:21
+ ...     $null = PackageManagement\Install-PackageProvider -Name $script:N ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider

PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name 'NuGet'. Try 'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet.0.0.1\PSModule.psm1:7411 char:21
+ ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProvider

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\Get-PackageProvider : Unable to find package provider 'NuGet'. It may not be imported yet. Try 'Get-PackageProvider -ListAvailable'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet.0.0.1\PSModule.psm1:7415 char:30
+ ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvider], Exception
    + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageProvider

Install-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure that '2.8.5.201' or newer version of NuGet provider is installed.
At line:1 char:1
+ Install-Module PowershellGet -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Install-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module

为什么我们会收到此错误?无法安装和下载 NuGet 提供程序的解决方案是什么?

查找 PowerShell 版本

查找系统上运行的 PowerShell 版本。我们将在 Windows Server 2016 中使用 Get-Host cmdlet。

[PS] C:\>Get-Host | Select-Object Version

Version
-------
5.1.14393.3471

PowerShell 5.1 默认启用 SSL 3.0 和 TLS 1.0 以实现安全 HTTP 连接。让我们通过下一步来确认这一点。

检查传输层安全协议

检查系统上支持的安全协议。

[PS] C:\>[Net.ServicePointManager]::SecurityProtocol
Ssl3, Tls

我们可以看到,系统中定义的安全协议是SSL 3.0和TLS 1.0。这两种安全协议均已弃用。

传输层安全协议

查看安全协议列表及其发布时间(包括当前状态)。截至撰写本文时,仅 TLS 1.2 和 TLS 1.3 获得批准。

Protocol    Published    Status
--------    ---------    ------
SSL 2.0     1995         Deprecated in 2011
SSL 3.0     1996         Deprecated in 2015
TLS 1.0     1999         Deprecated in 2020
TLS 1.1     2006         Deprecated in 2020
TLS 1.2     2008 	
TLS 1.3     2018

无法安装PowerShell的NuGet提供程序的解决方案

现在我们收集了所有信息,我们将在系统上启用 TLS 1.2。运行这两个 cmdlet 以设置 .NET Framework 强加密注册表项。之后,重新启动PowerShell并检查是否添加了安全协议TLS 1.2。最后,安装 PowerShellGet 模块。

第一个 cmdlet 是在 64 位 .Net Framework(版本 4 及更高版本)上设置强加密。

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

第二个 cmdlet 是在 32 位 .Net Framework(版本 4 及更高版本)上设置强加密。

[PS] C:\>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

重新启动 Powershell 并检查支持的安全协议。

[PS] C:\>[Net.ServicePointManager]::SecurityProtocol
Tls, Tls11, Tls12

运行命令 Install-Module PowershellGet -Force 并按 Y 安装 NuGet 提供程序,然后按 Enter

[PS] C:\>Install-Module PowershellGet -Force
 
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\administrator.EXOIP\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

NuGet 提供程序确实下载成功。对你有用吗?

结论

在本文中,您了解了为何无法安装 PowerShell 的 NuGet 提供程序。此问题的解决方案是在系统上配置 TLS1.2 或更高版本。之后,您可以安装 NuGet for PowerShell。您喜欢这篇文章吗?您可能还喜欢使用计划任务自动清理 Exchange 日志。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯