You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows PowerShell安装NuGet包提供程序出现下载与匹配报错

Windows PowerShell下NuGet包提供程序安装失败的解决方法

问题核心原因

你当前系统搭载的是内置旧版PowerShellGet(版本1.0.0.1),存在三个硬兼容性缺陷:

  • 自动下载NuGet提供程序的跳转链路未适配当前微软服务的TLS安全要求,仅在当前会话层设置TLS12的操作不会被旧版PowerShellGet的下载逻辑继承生效
  • 无管理员权限时,包提供程序目录的写入校验存在bug,会直接触发空路径写入失败
  • 本地根证书链版本过旧,会拦截NuGet提供程序的数字签名校验,导致系统判定下载到的程序无有效匹配标签

分步可操作方案

  • 首先以管理员身份启动Windows PowerShell,普通权限会无法写入系统级包提供程序目录,直接触发空路径报错
  • 全局修复TLS兼容配置,覆盖旧版PowerShellGet的会话读取逻辑:
# 全局启用TLS1.2及兼容协议,强制旧版包管理识别安全下载链路
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls11
# 临时跳过旧版根证书缺失导致的下载拦截
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
  • 手动创建NuGet提供程序的专属存储目录,绕开自动下载的链路bug:
# 按目标版本创建对应目录(64位系统执行)
$providerDir = "$env:ProgramFiles\PackageManagement\ProviderAssemblies\nuget\2.8.5.201"
New-Item -Path $providerDir -ItemType Directory -Force
# 可从微软官方针对PowerShell的离线组件安装包中提取对应版本的`Microsoft.PackageManagement.NuGetProvider.dll`文件,放入上述创建的目录即可
  • 执行带兼容参数的安装命令,绕开旧版的发布者校验拦截:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -SkipPublisherCheck
  • 若自动下载仍报错,直接手动升级本地PowerShellGet组件:将适配PowerShell 5.1的2.2.5以上版本PowerShellGet、1.4.8.1以上版本PackageManagement模块文件,按版本子文件夹结构放入C:\Program Files\WindowsPowerShell\Modules对应的模块路径下,重启PowerShell后再执行安装命令即可。

配套排查要点

  • 若处于企业内网环境,确认本地代理没有拦截微软官方的包下载链路,可临时关闭代理或把相关下载地址加入代理白名单
  • 执行Get-PackageProvider -ListAvailable命令确认系统已加载的NuGet提供程序版本,避免多版本冲突导致的匹配失败

内容的提问来源于stack exchange,提问作者writelines

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 05:15:04