Categories: PowerShell

Ошибка установки PowerShell модуля: Install-Module: Unable to download from URI

На старых версиях Windows (Windows 8, Windows Server 2012 R2, старые билды Windows 10) при установке модулей из PowerShell Gallery через NuGet с помощью команды Install-Module может появиться ошибка Unable to download from URI .

Например, при установке модуля Exchange Online PowerShell ( EXOv2 ), появляются ошибки загрузки модуля PowershellGet и провайдера NuGet:

Install-Module -Name ExchangeOnlineManagement -Force -Scope AllUsers

WARNING: Unable to download from URI ‘https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409′ to ”._x000D_WARNING: Unable to download the list of available providers. Check your internet connection._x000D_PackageManagementInstall-PackageProvider : No match was found for the specified search criteria for the provider 'NuGet'. The package provider requires 'PackageManagement' and 'Provider' tags. Please check if the specified package has the tags._x000D_CategoryInfo : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-PackageProvider], Exception_x000D_+ FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider_x000D_Unable to find package provider 'NuGet'. It may not be imported yet. Try 'Get-PackageProvider -ListAvailable'._x000D_+ CategoryInfo : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvider], Exception_x000D_+ FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageProvider_x000D_+ CategoryInfo : InvalidOperation: (:) [Install-Module], InvalidOperationException_x000D_+ FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module
Ошибка будет появляться при установке любого PowerShell модуля через NuGet, будь AzureAD , VMware PowerCLI , PSWindowsUpdate , SecretManagement , SQLServer и т.д.

При этом в журнале Event Viewer -> System будет появляться ошибка Schannel с EventID 36874 :

An TLS 1.2 connection request was received from a remote client application, but none of the cipher suites supported by the client application are supported by the server. The TLS request has failed.

Проблема возникает из-за того, что PowerShell пытается подключиться к репозиторию NuGet с помощью устаревших TLS/SSL протоколов вместо актуального TLS 1.2.

Проверьте версию PowerShell на вашем компьютере:

host|select version

Если у вас установлена версия PowerShell ниже, чем 5.1.14xx, обновите ее.

Более старые версии PowerShell по умолчанию используют SSL 3.0 и TLS 1.0 для установки защищенных https подключений к репозиториям.

Чтобы вывести список протоколов, которые используются для подключения, выполните команду:

[Net.ServicePointManager]::SecurityProtocol]

Ssl3, Tls

В нашем примере PowerShell использует для подключения устаревшие протоколы SSL 3.0, TLS 1.0, или TLS 1.1. На данный момент для подключения рекомендуется использовать TLS 1.2 или TLS 1.3.

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

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

После этого можно выполнить установку PowerShell модуля с помощью Install-Module.

Чтобы не переключать протокол https-подключения каждый раз вручную, вы можете включить использование протокола TLS 1.2 по-умолчанию в .NET Framework 4.5 (и выше). Для этого нужно внести следующие изменения в реестр командами :

Set-ItemProperty -Path 'HKLM:SOFTWAREWow6432NodeMicrosoft.NetFrameworkv4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Set-ItemProperty -Path 'HKLM:SOFTWAREMicrosoft.NetFrameworkv4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

Перезапустите консоль PowerShell. Выведите список доступных протоколов:

[Net.ServicePointManager]::SecurityProtocol

Tls, Tls11, Tls12

Теперь для подключения всегда используется протокол TLS 1.2 и вы можете установить любой PowerShell модуль через NuGet.

admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago