При установке модулей 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
Проблема может появится в 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])
В Windows 7 SP1 для включения поддержки TLS 1.2 нужно установить специальное обновление KB3140245 и патч MicrosoftEasyFix51044.msi.
Теперь вы можете установить или обновить модуль из PowerShell Gallery:
При следующем открытии консоли PowerShell вам придется заново включить поддержку TLS 1.2. Версии протоколов, используемые в PowerShell для подключения можно вывести так:
[Net.ServicePointManager]::SecurityProtocol
Чтобы при каждом запуске 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
netsh winhttp show proxy
Можно импортировать настройки прокси-сервера из системных настроек Windows (Internet Explorer).
netsh winhttp import proxy source=ie
Аналогичная ошибка при установке моделей PowerShell
Unable to download from URI
описана в предыдущей статье.