我正在关注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。
有人可以解释原因吗?
答案 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
并重命名/删除 PackageManagement 文件夹 然后一切都开始变得更好了。