【问题标题】:Unable to find module providers找不到模块提供程序
【发布时间】:2018-06-20 05:00:31
【问题描述】:

我遇到了 PowerShell 问题。几乎就像它没有一直安装一样;这很奇怪,因为它是 Windows 10 并且附带它。

在没有锁定的情况下,我尝试用另一台正在运行的 Windows 10 机器上的新副本替换以下目录:

  • C:\Users\UserName\AppData\Local\PackageManagement
  • C:\Program Files\WindowsPowerShell
  • C:\Program Files (x86)\WindowsPowerShell
  • C:\Windows\System32\WindowsPowerShell

我也试过SFC /scannow,但没有发现任何问题。我已经搜索了几个小时,但找不到任何有完全相同问题的人。有人有什么想法吗?

系统信息:

PS C:\WINDOWS\system32> [environment]::OSVersion.Version
Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      10586  0

PS C:\WINDOWS\system32> $PSVersionTable.PSVersion
Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  122

错误:

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

PS C:\WINDOWS\system32> Get-PackageProvider -Name PSModule -ForceBootstrap
Get-PackageProvider : Unable to find package provider 'PSModule'. It may not be imported yet. Try 'Get-PackageProvider
-ListAvailable'.
At line:1 char:1
+ Get-PackageProvider -Name PSModule -ForceBootstrap
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvi
   der], Exception
    + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPacka
   geProvider

下面什么都不返回:

PS C:\WINDOWS\system32> Get-PackageProvider -ListAvailable
PS C:\WINDOWS\system32>

【问题讨论】:

    标签: windows powershell powershell-5.0


    【解决方案1】:

    如果您的最终目标是从 Chocolatey 或类似的 PowerShell 安装包,您可能需要执行以下操作。

    要导入模块,您将执行以下操作:

    Import-Module PackageManagement
    

    要安装包提供程序,您需要执行以下操作:

    Install-PackageProvider -Name Chocolatey -Force
    

    要在包提供者 Chocolatey 中查找包,您需要执行以下操作(您可以使用通配符作为名称来获取所有可用的包):

    Find-Package -Name SomePackageNameHere -ProviderName Chocolatey
    

    最后,要从 Chocolatey 安装软件包,您需要执行以下操作:

    Install-Package -Name SomePackageNameHere -ProviderName Chocolatey -Force
    

    我希望这会有所帮助!

    【讨论】:

    • 感谢 Tyler 的回复,但这并不能解决我的问题,因为系统没有看到任何已安装的软件包存储库或软件包提供程序 PSModule。
    • 这些答案都假设用户可以访问互联网。这是没有互联网可用时出现的错误。
    【解决方案2】:

    看来我解决了这个问题。我使用 CMD.exe 方法安装了Chocolatey

    我以管理员身份运行 CMD.exe 并运行以下命令:

    @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
    

    现在我有一个 PS 存储库: PS C:\WINDOWS\system32> 获取-PSRepository

    Name                      PackageManagementProvider InstallationPolicy   SourceLocation
    ----                      ------------------------- ------------------   --------------
    PSGallery                 NuGet                     Untrusted            https://www.powershellgallery.com/api/v2/
    

    我猜是在安装 Chocolatey 的过程中,修复了损坏的部分。

    【讨论】:

    • 我忘了,我在安装 Chocolaty 后尝试运行 choco 命令时确实遇到了问题。错误:The registered delegate for type IXmlService threw an exception. The registered delegate for type IHashProvider threw an exception. Exception has been thrown by the target of an invocation. 以下链接解决了该问题:github.com/chocolatey/choco/issues/446 将以下密钥设置为:0 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2023-01-31
    相关资源
    最近更新 更多