Install-PackageProvider无法识别为cmdlet,函数,脚本文件或可运行程序的名称

时间:2016-03-05 18:58:58

标签: powershell powershellget

我正在关注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。

有人可以解释原因吗?

4 个答案:

答案 0 :(得分:2)

此错误表示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

答案 1 :(得分:2)

当我做Get-Module -ListAvailable -Name PackageManagement时,正如Adam Bertram所建议的那样,我发现主文件夹中有一个不同的版本,是以前安装的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 :(得分:0)

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

答案 3 :(得分:0)

我不得不打开文件夹 目录:C:\Users\Documents\WindowsPowerShell\Modules

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