无法找到模块提供程序

4

我在使用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

错误:

Errors:

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>
2个回答

3

如果你的最终目的是使用PowerShell从Chocolatey或类似软件安装程序包,那么你需要执行以下操作。

要导入模块,你需要执行以下命令:

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。 - TB.
这些答案都假设用户可以访问互联网。当没有可用的互联网时,就会出现这个错误。 - Jamie

0

看起来我解决了这个问题。我使用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> Get-PSRepository

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

我猜测在安装Chocolatey期间,修复了任何损坏的东西。


1
我忘了,在安装Chocolaty后,当我尝试运行“choco”命令时出现了问题。 错误: “类型IXmlService的注册委托引发了异常。类型IHashProvider的注册委托引发了异常。目标调用抛出了异常。” 以下链接解决了此问题: https://github.com/chocolatey/choco/issues/446 将以下密钥设置为:0 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled” - TB.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接