【问题标题】:Install-PackageProvider is not recognized as the name of a cmdlet, function, script file, or operable programInstall-PackageProvider 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
【发布时间】:2016-06-19 12:13:31
【问题描述】:

我正在关注Get Started with the PowerShell Gallery,它指出 PowerShellGet 模块存在于 Windows 10(我正在使用 - build 14721)中。为了确认,我正在运行 PowerShell v5:

>$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.0.14271.1000
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14271.1000
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Get Started with the PowerShell Gallery 状态:

PowerShellGet 还需要 NuGet 提供程序才能与 PowerShell 库一起使用。如果 NuGet 提供程序不在以下位置之一,系统将提示您在首次使用 PowerShellGet 时自动安装 NuGet 提供程序: •$env:ProgramFiles\PackageManagement\ProviderAssemblies
•$env:LOCALAPPDATA\PackageManagement\ProviderAssemblies

我在这些地方什么都没有:

>ls $env:LOCALAPPDATA\PackageManagement\ProviderAssemblies    
>ls $env:ProgramFiles\PackageManagement\ProviderAssemblies
ls : Cannot find path 'C:\Program Files\PackageManagement\ProviderAssemblies' because it does not exist.
At line:1 char:1
+ ls $env:ProgramFiles\PackageManagement\ProviderAssemblies
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Program File...viderAssemblies:String) [Get-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Get Started with the PowerShell Gallery 然后声明:

或者,您可以运行 Install-PackageProvider -Name NuGet -Force 来自动下载和安装 NuGet 提供程序。

如果我尝试这样做:

>Install-PackageProvider -Name NuGet -Force
Install-PackageProvider : The term 'Install-PackageProvider' is not recognized as the name of a cmdlet, function, script file, or operable program.
correct and try again.
At line:1 char:1
+ Install-PackageProvider -Name NuGet -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Install-PackageProvider:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

我很困惑。我有 PowerShell v5,但似乎我没有应该有的一切,即 PowerShellGet。

谁能解释一下原因?

【问题讨论】:

  • 您是否以管理员身份运行 Powershell 控制台?默认情况下,我相信 PS 控制台或 ISE 作为受限用户运行。尝试从“开始”菜单中右键单击 Powershell,然后选择“以管理员身份运行”。
  • 刚刚尝试以管理员身份运行“Install-PackageProvider -Name NuGet -Force”,结果相同:(
  • 你的 PS 控制台标题是 Administrator: 吗?另外,当我在 Win 7 上尝试 PS v5 时,您是否检查过 technet.microsoft.com/en-us/library/mt676543.aspx 并尝试使用 Get-PackageProvider -ListAvailable,我收到错误消息,指出 ListAvailable 不是可识别的参数。
  • 刚刚重新启动以安装更新。会让你知道的。
  • >Get-PackageProvider -ListAvailable Get-PackageProvider : 找不到与参数名称“ListAvailable”匹配的参数。

标签: powershell powershellget


【解决方案1】:

当我按照 Adam Bertram 的建议执行 Get-Module -ListAvailable -Name PackageManagement 时,我发现我的主文件夹中有一个不同的版本,这是从以前安装的 Windows 中复制到新机器上的垃圾:

> Get-Module -ListAvailable -Name PackageManagement


    Directory: C:\Users\<myusername>\Documents\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     1.4.7      PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider, Get-Packa...


    Directory: C:\Program Files\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Binary     1.0.0.1    PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider, Get-Packa..

删除此版本,或在此之前仅强制系统版本与 Import-Module PackageManagement -RequiredVersion 1.0.0.1 一起使用,允许我安装 NuGet 提供程序。

【讨论】:

    【解决方案2】:

    “Install-PackageProvider”直到 PowerShell 5.1 才引入

    【讨论】:

      【解决方案3】:

      此错误意味着 PowerShell 找不到 Install-PackageProvider 所属的模块。 Install-PackageProvider 是 PackageManagement 模块的成员。要验证这一点,请运行 Get-Module

      Get-Module -ListAvailable -Name PackageManagement
      

      如果出现此错误,您需要确保 PackageManagement 文件夹位于 $env:PSModulePath 中。这是查看 PackageManagement 文件夹的每个文件夹的快速方法。

      $env:psmodulepath.Split(';') | foreach {gci $_ -filter '*packagemanagement*'}
      

      如果没有返回,您甚至没有任何可以由 PowerShell 自动导入的 PackageManagement 模块文件夹。

      如果是这种情况,我建议重新安装PowerShell v5 RTM

      【讨论】:

      • 感谢 Adam,已升级到 Windows 10 内部版本 13279,并且出现了相同的症状。访问了您的链接 (microsoft.com/en-us/download/details.aspx?id=50395) 并且(不足为奇)没有选择下载适用于 Windows 10 的 WMF5.0。我现在完全被难住了。
      • 哦,还有:>Get-PackageProvider -ListAvailable Get-PackageProvider:找不到与参数名称“ListAvailable”匹配的参数。
      • 您可能必须使用添加/删除程序和功能来删除 PowerShell 或 WMF5.0,因为它是一个操作系统捆绑组件。
      • 是的,感觉有点危险。认为我只需要降级到最新的公开可用的 Win10,我正在快速更新并愿意打赌这是问题的一部分。
      • 对我来说同样的问题。 (Get-Module -ListAvailable -Name PackageManagement).ExportedCommands 仅列出 Find-Package Get-Package Get-PackageProvider Get-PackageSource Install-Package Register-PackageSource Set-PackageSource Unregister-PackageSource Uninstall-Package Save-Package
      【解决方案4】:

      我必须打开文件夹 目录:C:\Users\Documents\WindowsPowerShell\Modules

      并重命名/删除 PackageManagement 文件夹 然后一切都开始变得更好了。

      【讨论】:

        猜你喜欢
        • 2021-07-19
        • 1970-01-01
        • 1970-01-01
        • 2014-03-30
        • 2021-06-09
        • 2021-11-01
        • 2021-05-23
        • 2020-11-21
        • 1970-01-01
        相关资源
        最近更新 更多