这是一个常见的错误,不能通过我在互联网上找到的通用解决方案来解决。
无法运行、Install和相关程序(OneGet?)命令没有抛出“无法找到模块提供程序(PowerShellGet)”错误。这似乎是NuGet打包器模块的一个问题,但我不知道如何恢复。已安装的包提供程序显示为有效。
症状模式:
C:> Net.ServicePointManager::SecurityProtocol
Tls12Get-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 -Force强制安装sxs时,我得到相同的信息: PackageManagement\Install-Package :无法找到模块提供程序( PowerShellGet )。
发布于 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
发布于 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扩展名时,文件日期与之匹配。
从模块中删除文件夹暂时纠正了问题。
发布于 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的模块路径,删除了标识信息:
$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.
更改后的模块路径:
$env:PSModulePath -split ';'
C:\Users\{myUsername}\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules另一个解决办法是让OneDrive将文件保存在本地。
%USERPROFILE%/Documents
WindowsPowershell并选择“始终保持在此设备上”。我还没能测试过这个,但是它可能是解决这个问题的最小的方法。https://stackoverflow.com/questions/65482945
复制相似问题