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

Начните с галереи PowerShell:

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 После этого все стало работать лучше.

Другие вопросы по тегам