14

我正在关注PowerShell 库入门,其中指出 PowerShellGet 模块存在于 Windows 10(我正在使用 - 内部版本 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

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

开始使用 PowerShell 库然后指出:

或者,您可以运行 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

4 回答 4

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..

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

于 2020-08-03T19:29:05.363 回答
4

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

于 2019-10-04T14:57:12.183 回答
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

于 2016-03-05T19:32:12.463 回答
0

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

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

于 2020-12-22T21:23:48.413 回答