首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >腐败的PackageManager?无法找到模块提供程序(PowerShellGet)

腐败的PackageManager?无法找到模块提供程序(PowerShellGet)
EN

Stack Overflow用户
提问于 2020-12-28 19:24:28
回答 3查看 4.6K关注 0票数 7

这是一个常见的错误,不能通过我在互联网上找到的通用解决方案来解决。

无法运行、Install和相关程序(OneGet?)命令没有抛出“无法找到模块提供程序(PowerShellGet)”错误。这似乎是NuGet打包器模块的一个问题,但我不知道如何恢复。已安装的包提供程序显示为有效。

症状模式:

C:> Net.ServicePointManager::SecurityProtocol

代码语言:javascript
复制
Tls12

Get-PSRepository

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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 -Force强制安装sxs时,我得到相同的信息: PackageManagement\Install-Package :无法找到模块提供程序( PowerShellGet )。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-01 12:42:06

我们遇到了同样的问题。在没有解决方案的情况下找到这个线程。但是我进一步研究了一下,在出现这个问题的计算机上,我们找到了1.4.7版的PackageManagement安装。删除此文件夹后,一切都开始正常工作。我还没找到这东西是怎么安装的。看起来像微软的一个合法的powershell模块,但它正在与“正常”的PowershellGet模块交互,并且似乎破坏了它。对我们来说,它位于%USERPROFILE%/documents/WindowsPowershell/Modules。同样不值钱的是,这个%USERPROFILE%是一个企业OneDrive。

编辑:微软已经修复了这个问题:https://github.com/PowerShell/vscode-powershell/issues/3432

票数 11
EN

Stack Overflow用户

发布于 2021-03-04 23:09:29

没有足够的代表评论。

我也在同样的情况下结束了。一台Windows 10 1909机器,其中%USERPROFILE%/document是一个公司OneDrive。将PackageManagement移出/WindowsPowerShell/将Get的输出从零移到PSGallery。谢谢!-3月1日21点35分,这是同一个问题。我怀疑这是因为PowerShell 7将其转储到这个位置(可能是Visual代码,当它提示更新?)-aolszowkaMar1在22:09。

我在我的个人简介中遇到了在%USERPROFILE%/文档中使用包管理的相同问题。当我在这台新机器上安装VScode和Powershell扩展名时,文件日期与之匹配。

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

票数 3
EN

Stack Overflow用户

发布于 2022-11-11 17:54:37

除了删除%USERPROFILE%/Documents/WindowsPowershell/Modules文件夹之外,我还发现在本地放置软件包管理器有助于powershell.exe -NoLogo -NoProfile -Command 'Save-Module PackageManagement -MinimumVersion 1.4.7 -LiteralPath ""C:\Program Files\WindowsPowerShell\Modules\""',这要归功于它在这里的https://github.com/PowerShell/vscode-powershell/issues/2824#issuecomment-750902181

这是因为%USERPROFILE%/Documents文件夹位于OneDrive上,而模块安装在默认情况下一直将PackageManagement模块安装到用户文档中,忽略PSModulePath,甚至删除/更改了OneDrive位置。

这是我在vscode中运行PS的模块路径,删除了标识信息:

代码语言:javascript
复制
$env:PSModulePath -split ';'
C:\Users\{myUsername}\OneDrive - {myCompanyName}\{company}\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

为了解决这个问题,可以做更多的事情,这里再次讨论了https://github.com/PowerShell/PowerShell/issues/15552#issuecomment-1002708799,比如将documents文件夹设置为本地文件夹,关闭OneDrive,如这里所示,https://support.microsoft.com/en-us/topic/configuration-of-the-my-documents-folder-dfd9a90d-8f80-18d6-e7cc-f1566fc3b10b

我现在遵循了这些步骤。

在资源管理器中向左单击“快速访问文档”下的“Properties.

  • Change”,然后单击“配置”框中的“位置”选项卡上的“Properties.

  • Change”,然后键入“文档”文件夹的新路径,然后使用“本地”

  • 单击“否”,以便现有文件不会移动,仍然可以通过进入OneDrive进行访问。我还为我的OneDrive位置添加了另一个快速访问文件夹,但这取决于您。注意:这会影响其他程序,比如PowerPoint的默认保存位置。您需要注意的是,您没有保存一些本地的东西,认为它将被备份到OneDrive.

更改后的模块路径:

代码语言:javascript
复制
$env:PSModulePath -split ';'
C:\Users\{myUsername}\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

另一个解决办法是让OneDrive将文件保存在本地。

%USERPROFILE%/Documents

  • Right导航到
  1. ,单击WindowsPowershell并选择“始终保持在此设备上”。我还没能测试过这个,但是它可能是解决这个问题的最小的方法。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65482945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档