Поврежден менеджер пакетов? Не удалось найти поставщиков модулей (PowerShellGet)
Это распространенная ошибка, которая не решается обычными решениями, которые я нашел в Интернете.
Невозможно запустить Get-PsRepository, Install-Module и связанные с ними (OneGet?) команды без того, чтобы они не вызывали ошибку «Невозможно найти поставщиков модулей (PowerShellGet)». Похоже, это проблема с модулем менеджера пакетов NuGet, но я не знаю, как ее восстановить. Установленный поставщик пакетов кажется действительным
Шаблоны симптомов:
C:> [Net.ServicePointManager]::SecurityProtocol
Tls12
Get-PSRepository
PackageManagement\Get-PackageSource : Unable to find module providers (PowerShellGet).
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:4496 char:31
+ ... ckageSources = PackageManagement\Get-PackageSource @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power...etPackageSource:GetPackageSource) [Get-PackageSource
], Exception
+ FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageSource
Регистрация-PSRepository-Default-Verbose
VERBOSE: PowerShell meta provider initialization failed.
VERBOSE: No match was found for the specified search criteria and provider name 'PowerShellGet'. Try
'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
PackageManagement\Register-PackageSource : Unable to find module providers (PowerShellGet).
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:4211 char:17
+ ... $null = PackageManagement\Register-PackageSource @PSBoundParamete ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power...erPackageSource:RegisterPackageSource) [Register-Pac
kageSource], Exception
+ FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.RegisterPackageSource
Установить-модуль PowerShellGet-Force
PackageManagement\Install-Package : Unable to find module providers (PowerShellGet).
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1809 char:21
+ ... $null = PackageManagement\Install-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception
+ FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
Факты:
Windows 10 (1903)
Powershell 5.1.18362.1171
Запуск PowerShell от имени администратора Не за прокси-сервером
Иметь доступ к https://www.powershellgallery.com/api/v2
Иметь доступ к nuget.org
`[Net.ServicePointManager]::SecurityProtocol = Tls12
FIPS отключен (HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabled DWORD=0)
Get-PackageProvider показывает только версию NuGet 2.8.5.208
PowerShellGet 1.0.0.1 ; при попытке принудительно установить sxs с помощью Install-Module PowerShellGet -Force я получаю то же самое: PackageManagement\Install-Package: невозможно найти поставщиков модулей (PowerShellGet).
3 ответа
Мы столкнулись с той же проблемой. Нашел эту тему без решения. Но я копнул немного дальше, и на компьютере с этой проблемой мы обнаружили установленную версию 1.4.7 PackageManagement. После удаления этого все стало нормально работать. Я не нашел, как эта штука была установлена. Похоже на законный модуль PowerShell от Microsoft, но он взаимодействует с «обычным» модулем PowershellGet и, похоже, ломает его. Для нас он находился в папке %USERPROFILE%/document/WindowsPowershell/Modules. Также ничего не стоит, что этот %USERPROFILE% был корпоративным OneDrive.
Недостаточно представителя, чтобы прокомментировать.
Я оказался в такой же ситуации. Компьютер с Windows 10 1909, где %USERPROFILE%/document является корпоративным OneDrive. Перемещение PackageManagement из /WindowsPowerShell/ изменило вывод Get-PSRepository с нуля на PSGallery. Спасибо! — tmcg 1 марта в 21:35 Это была точно такая же проблема. Я подозреваю, что это связано с тем, что PowerShell 7 сбросил его в это место (возможно, код VisualStudio, когда он предлагает обновить?)
Я столкнулся с той же проблемой с управлением пакетами в %USERPROFILE%/documents в моем личном профиле. Даты файлов совпали, когда я установил VScode и расширения Powershell на эту новую машину.
Удаление папки из модулей решило проблему на данный момент.
В дополнение к удалению%USERPROFILE%/Documents/WindowsPowershell/Modules
папку, я также обнаружил, что локальное размещение диспетчера пакетов помоглоpowershell.exe -NoLogo -NoProfile -Command 'Save-Module PackageManagement -MinimumVersion 1.4.7 -LiteralPath ""C:\Program Files\WindowsPowerShell\Modules\""'
спасибо вот тут https://github.com/PowerShell/vscode-powershell/issues/2824#issuecomment-750902181
Причина связана с тем, что папка находится в OneDrive, а установка модуля продолжает устанавливать модуль PackageManagement в пользовательские документы по умолчанию, игнорируя PSModulePath, даже если расположение OneDrive удалено/изменено.
Этот путь к моему модулю от запуска PS внутри vscode, идентифицирующий информацию, удален:
$env:PSModulePath -split ';'
C:\Users\{myUsername}\OneDrive - {myCompanyName}\{company}\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
Есть и другие вещи, которые можно сделать, чтобы это не повторилось, обсуждаемые здесь https://github.com/PowerShell/PowerShell/issues/15552#issuecomment-1002708799 Например, установка папки документов на локальную и вне OneDrive, как показано здесь https://support.microsoft.com/en-us/topic/configuration-of-the-my-documents-folder-dfd9a90d-8f80-18d6-e7cc-f1566fc3b10b
Я выполнил эти шаги на данный момент.
- В проводнике слева под быстрым доступом щелкните правой кнопкой мыши Документы, а затем щелкните Свойства.
- Перейдите на вкладку «Расположение» в окне конфигурации и введите новый путь к папке «Документы», я использовал локальный.
- Нажмите «Нет», чтобы существующие файлы не перемещались и к ним по-прежнему можно было получить доступ, зайдя в OneDrive. Я также добавил еще одну папку быстрого доступа для моего местоположения OneDrive, но это на ваше усмотрение. Примечание. Это влияет на другие программы, а также на место сохранения по умолчанию для PowerPoint. Вам нужно помнить, что вы не сохраняете что-то локальное, думая, что оно будет скопировано в OneDrive.
Мои пути к модулям после изменения:
$env:PSModulePath -split ';'
C:\Users\{myUsername}\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
Другой обходной путь может заключаться в том, чтобы OneDrive хранил файлы локально.
- Перейдите к
%USERPROFILE%/Documents
- Щелкните правой кнопкой мыши
WindowsPowershell
и выберите «Всегда сохранять на этом устройстве». Я не смог проверить это, но это может быть наименее эффективный способ решить эту проблему.