【Install-Module : 需要使用 NuGet 提供程序来与基于 NuGet 的存储库交互。请确保已安装 NuGet 提供程序或更高版本。】

2023-11-24 18:36:40 浏览数 (1)

【Install-Module : 需要使用 NuGet 提供程序来与基于 NuGet 的存储库交互。请确保已安装 NuGet 提供程序“2.8.5.201”或更高版本。】

需要使用 NuGet 提供程序来与基于 NuGet 的存储库交互。请确保已安装 NuGet 提供程序“2.8.5.201”或更高版本。

需要使用 NuGet 提供程序来继续操作

需要使用 NuGet 提供程序“2.8.5.201”或更高版本来与基于 NuGet 的存储库交互。

必须在“C:Program FilesPackageManagementProviderAssemblies”或“C:UsersAdministratorAppDataLocalPackageManagementProviderAssemblies”中提供 NuGet 提供程序。

也可以通过运行 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' 安装NuGet 提供程序。是否要让 PowerShellGet 立即安装并导入 NuGet 提供程序?

powershell执行Install-Module命令报这个错时,一般是tls小于1.2导致的,一般在低版本系统比如2008R2、2012R2、2016上遇到。

主要用下面这句powershell命令检测,如果结果是True,代表满足≥tls1.2,如果是False,代表不满足

代码语言:javascript复制
[System.Net.ServicePointManager]::SecurityProtocol.HasFlag([Net.SecurityProtocolType]::Tls12)

临时解决办法执行以下3选1命令,仅对当前窗口有效

代码语言:javascript复制
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

代码语言:javascript复制
Install-Module -Name DotNetVersionLister -Scope CurrentUser -Force
代码语言:javascript复制
[System.Net.ServicePointManager]::SecurityProtocol.HasFlag([Net.SecurityProtocolType]::Tls12)

if(([System.Net.ServicePointManager]::SecurityProtocol.HasFlag([Net.SecurityProtocolType]::Tls12)) -eq $false){
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
}

[System.Net.ServicePointManager]::SecurityProtocol.HasFlag([Net.SecurityProtocolType]::Tls12)

Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

如果不支持tls1.2,执行命令会卡在Downloading,支持的话,会执行完成到下一行

想永久对任何后面新打开的powershell窗口都生效的话,采用如下方案:

查看$PROFILE变量,我们搞全局设置,因此要选$PROFILE.AllUsersAllHosts(C:WindowsSystem32WindowsPowerShellv1.0profile.ps1

代码语言:javascript复制
$PROFILE | Get-Member -Type NoteProperty|ft -AutoSize

检查配置文件是否存

代码语言:javascript复制
Test-Path -Path $PROFILE.AllUsersAllHosts

如果不存在则创建

代码语言:javascript复制
Set-ExecutionPolicy Unrestricted -force
if (!(Test-Path -Path $PROFILE.AllUsersAllHosts)) {
New-Item -ItemType File -Path $PROFILE.AllUsersAllHosts -Force
}

创建后打开

代码语言:javascript复制
notepad $PROFILE.AllUsersAllHosts

打开后添加这句命令并保存

代码语言:javascript复制
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

以上就设置好powershell配置文件级别的tls1.2了

0 人点赞