5

这是我在互联网上找到的常见解决方案无法解决的常见错误。

无法运行 Get-PsRepository、Install-Module 和相关 (OneGet?) 命令,而不会引发“无法找到模块提供程序 (PowerShellGet)”错误。这似乎是 NuGet 包管理器模块的问题,但我不知道如何恢复。安装的包提供程序似乎有效

症状模式:
C:> [Net.ServicePointManager]::SecurityProtocol

Tls12

获取 PSRepository

PackageManagement\Get-PackageSource : Unable to find module providers (PowerShellGet).
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:4496 char:31
+ ... ckageSources = PackageManagement\Get-PackageSource @PSBoundParameters
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power...etPackageSource:GetPackageSource) [Get-PackageSource
   ], Exception
    + FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageSource

注册-PSRepository -Default -Verbose

VERBOSE: PowerShell meta provider initialization failed.
VERBOSE: No match was found for the specified search criteria and provider name 'PowerShellGet'. Try
'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
PackageManagement\Register-PackageSource : Unable to find module providers (PowerShellGet).
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:4211 char:17
+ ...     $null = PackageManagement\Register-PackageSource @PSBoundParamete ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power...erPackageSource:RegisterPackageSource) [Register-Pac
   kageSource], Exception
    + FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.RegisterPackageSource  

安装模块 PowerShellGet -Force

PackageManagement\Install-Package : Unable to find module providers (PowerShellGet).
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1809 char:21
+ ...          $null = PackageManagement\Install-Package @PSBoundParameters
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception
    + FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

事实:
Windows 10 (1903)
Powershell 5.1.18362.1171
以管理员身份运行 PowerShell 不在代理后面
有权访问https://www.powershellgallery.com/api/v2
有权访问 nuget.org
`[Net.ServicePointManager]::SecurityProtocol = Tls12
FIPS 已禁用 (HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabled DWORD=0)
Get-PackageProvider 仅显示 NuGet 2.8.5.208
PowerShellGet 版本为 1.0.0.1 ;当尝试使用 Install-Module PowerShellGet -Force 强制安装 sxs 时,我得到了相同的结果: PackageManagement\Install-Package:无法找到模块提供程序 (PowerShellGet)。

4

2 回答 2

9

我们遇到了同样的问题。发现这个线程没有解决方案。但我进一步挖掘,在出现此问题的计算机上,我们发现安装了 1.4.7 版的 PackageManagement。删除后,一切都开始正常工作。我还没有找到这个东西是如何安装的。看起来像是来自 Microsoft 的合法 powershell 模块,但它正在与“普通”PowershellGet 模块交互,并且似乎破坏了它。对我们来说,它位于 %USERPROFILE%/document/WindowsPowershell/Modules 中。这个 %USERPROFILE% 是企业 OneDrive 也毫无价值。

于 2021-03-01T12:42:06.130 回答
3

没有足够的代表发表评论。

我最终陷入了同样的境地。一台 Windows 10 1909 机器,%USERPROFILE%/document 是企业 OneDrive。将 PackageManagement 移出 /WindowsPowerShell/ 将 Get-PSRepository 的输出从无更改为 PSGallery。谢谢!– tmcg 3 月 1 日 21:35 这是完全相同的问题。我怀疑这是因为 PowerShell 7 将其转储到此位置(可能是 Visual Studio Code 提示更新时?) – aolszowka 3 月 1 日 22:09

我在个人资料的 %USERPROFILE%/documents 中遇到了同样的包管理问题。当我在这台新机器上安装 VScode 和 Powershell 扩展时,文件日期匹配。

从模块中删除文件夹暂时纠正了这个问题。

于 2021-03-04T23:09:29.030 回答