Unable to resolve package source: ошибка установки модулей PowerShell

При установке модулей PowerShell из онлайн галереи PSGallery вы можете столкнуться с ошибкой WARNING: Unable to resolve package source :

Install-Module SqlServer

WARNING: Unable to resolve package source ‘https://www.powershellgallery.com/api/v2’.
PackageManagement\Find-Package : No match was found for the specified search criteria and module name ‘sqlserver. Try Get-PSRepository to see all available registered module repositories.
NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage

PowerShell Install-Module ошибка Unable to resolve package source

Аналогичная ошибка будет появляться при онлайн установке любого PowerShell модуля через Nuget будь то модуль Exchange Online Powershell, AzureAD, VMware PowerCLI, PSWindowsUpdate, SecretManagement, SQLServer и т.д. При этом любой PowerShell модуль можно легко установить вручную в офлайн режиме.

Проблема может появится в Windows 10 и Windows Server 2016 и более старых версиях Windows. Причина проблемы в том, что по-умолчанию PowerShell пытается использовать устаревший и небезопасный протокол TLS 1.0 для подключения к PSGallery. С апреля 2020 года PowerShell Gallery разрешает подключение к NuGet провайдеру только с помощью TLS 1.2.

Если в Windows не отключены протоколы TLS 1.0 и TLS 1.1, нужно выполнить следующую команду, чтобы в текущей сессии PowerShell для подключения использовался протокол TLS 1.2:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Версия TLS 1.2 поддерживается во всех версиях Windows, начиная с Windows 8/Windows Server 2012. Список поддерживаемых версий TLS в PowerShell можно вывести так:

[enum]::GetNames([Net.SecurityProtocolType])

список поддерживаемых версий TLS в PowerShell

В Windows 7 SP1 для включения поддержки TLS 1.2 нужно установить специальное обновление KB3140245 и патч MicrosoftEasyFix51044.msi.

Если ваша Windows 7 не поддерживает TLS 1.2, то при подключении к большинству современных почтовых серверов с помощью Outlook будет появляться ошибка 0x800CCC1A – Ваш сервер не поддерживает указанный вами тип шифрования.

Теперь вы можете установить или обновить модуль из PowerShell Gallery:

включить TLS 1.2 для PowerShell

При следующем открытии консоли PowerShell вам придется заново включить поддержку TLS 1.2. Версии протоколов, используемые в PowerShell для подключения можно вывести так:

[Net.ServicePointManager]::SecurityProtocol

версия протокола TLS в PowerShell по-умолчанию

Чтобы при каждом запуске PowerShell вам не приходилось включать использование TLS1.2, можно изменить версию TLS по умолчанию для .NET Framework. Для этого с помощью PowerShell внесите следующие изменения в реестр:

Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319’ -Name ‘SchUseStrongCrypto’ -Value ‘1’ -Type DWord
Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319’ -Name ‘SchUseStrongCrypto’ -Value ‘1’ -Type DWord

Если ваш компьютер подключён к Интернету через прокси-сервер, убедитесь, что в сессии PowerShell настроено подключение через прокси:

netsh winhttp show proxy

Можно импортировать настройки прокси-сервера из системных настроек Windows (Internet Explorer).

netsh winhttp import proxy source=ie

Аналогичная ошибка при установке моделей PowerShell Unable to download from URI описана в предыдущей статье.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)