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

jam*_*iet 7 powershell powershellget

我正在关注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
Run Code Online (Sandbox Code Playgroud)

PowerShell库入门指出:

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
Run Code Online (Sandbox Code Playgroud)

开始使用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
Run Code Online (Sandbox Code Playgroud)

我很困惑.我有PowerShell v5,但似乎我没有应有的东西,即PowerShellGet.

有人可以解释原因吗?

Sor*_*tad 8

当我这样做时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..
Run Code Online (Sandbox Code Playgroud)

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


Nit*_*sCS 5

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


Ada*_*ram 3

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

Get-Module -ListAvailable -Name PackageManagement
Run Code Online (Sandbox Code Playgroud)

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

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

如果没有任何结果,则说明您甚至没有 PowerShell 自动导入的 PackageManagement 模块文件夹。

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