Install-PackageProvider не распознается как имя командлета, функции, файла сценария или работоспособной программы.
Я слежу за началом работы с PowerShell Gallery, в которой говорится, что модуль 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
PowerShellGet также требует, чтобы поставщик NuGet работал с PowerShell Gallery. Вам будет предложено установить поставщика 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.
Может кто-нибудь объяснить почему?
5 ответов
Когда я сделал 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.
"Install-PackageProvider" не был представлен до PowerShell 5.1.
Эта ошибка означает, что PowerShell не может найти модуль, частью которого является Install-PackageProvider. Install-PackageProvider является членом модуля PackageManagement. Чтобы проверить это, запустите Get-Module
Get-Module -ListAvailable -Name PackageManagement
Если это приведет к ошибке, вам нужно убедиться, что у вас есть папка PackageManagement, находящаяся внутри вашего $ env: PSModulePath. Вот быстрый способ просмотреть каждую из папок для папки PackageManagement.
$env:psmodulepath.Split(';') | foreach {gci $_ -filter '*packagemanagement*'}
Если ничего не возвращается, у вас даже нет папки с модулем PackageManagement, где он может быть автоматически импортирован PowerShell.
Если это так, я бы рекомендовал переустановить PowerShell v5 RTM.
На моем Win2019 Get-PackageProvider (с заглавными буквами) не работал, но работал get-packageprovider. Этот Powershell, который должен быть «самым» решением, всегда меня удивляет :-/
Мне пришлось открыть папку Каталог: C:\Users<myusername>\Documents\WindowsPowerShell\Modules
и переименовать/удалить папку PackageManagement После этого все стало работать лучше.