Búsqueda de sitios web

No se puede instalar el proveedor NuGet para PowerShell


Antes de instalar el módulo EXO V2, necesitamos instalar el módulo PowerShellGet. El problema es que no podemos instalar el proveedor NuGet y aparecen un par de errores. Advertencia que no se puede descargar desde URI, no se puede descargar la lista de proveedores disponibles. Después de los errores, no se instaló. En este artículo, aprenderá por qué sucede esto y la solución para instalar el proveedor NuGet para PowerShell.

No se puede instalar el proveedor NuGet para PowerShell

Ejecute PowerShell como administrador. Ejecute el comando Install-Module PowershellGet -Force. Cuando se le solicite instalar el proveedor NuGet, presione Y y siga con Enter.

[PS] C:\>Install-Module PowershellGet -Force

NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\administrator.EXOIP\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

Después de presionar Y y seguir con Enter, el resultado nos da las siguientes advertencias.

  • ADVERTENCIA: No se puede descargar desde URI.

  • ADVERTENCIA: No se puede descargar la lista de proveedores disponibles. Comprueba tu conexión a Internet.

  • No se puede encontrar el proveedor de paquetes 'NuGet'. Puede que aún no se haya importado.

WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Install-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.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7405 char:21
+ ...     $null = PackageManagement\Install-PackageProvider -Name $script:N ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider

PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name 'NuGet'. Try 'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7411 char:21
+ ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProvider

WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Get-PackageProvider : Unable to find package provider 'NuGet'. It may not be imported yet. Try 'Get-PackageProvider -ListAvailable'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30
+ ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvider], Exception
    + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageProvider

Install-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure that '2.8.5.201' or newer version of NuGet provider is installed.
At line:1 char:1
+ Install-Module PowershellGet -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Install-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module

¿Por qué recibimos este error y cuál es la solución si no podemos instalar y descargar el proveedor NuGet?

Buscar la versión de PowerShell

Busque la versión de PowerShell que se está ejecutando en el sistema. Usaremos el cmdlet Get-Host en Windows Server 2016.

[PS] C:\>Get-Host | Select-Object Version

Version
-------
5.1.14393.3471

PowerShell 5.1 habilita SSL 3.0 y TLS 1.0 para conexiones HTTP seguras de forma predeterminada. Confirmémoslo con el siguiente paso.

Verifique los protocolos de seguridad de la capa de transporte

Verifique los protocolos de seguridad admitidos en el sistema.

[PS] C:\>[Net.ServicePointManager]::SecurityProtocol
Ssl3, Tls

Como podemos ver, los protocolos de seguridad definidos en el sistema son SSL 3.0 y TLS 1.0. Ambos protocolos de seguridad están en desuso.

Protocolos de seguridad de la capa de transporte

Vea una lista de los protocolos de seguridad y cuándo se publican, incluido el estado actual. Al momento de escribir este artículo, solo están aprobados TLS 1.2 y TLS 1.3.

Protocol    Published    Status
--------    ---------    ------
SSL 2.0     1995         Deprecated in 2011
SSL 3.0     1996         Deprecated in 2015
TLS 1.0     1999         Deprecated in 2020
TLS 1.1     2006         Deprecated in 2020
TLS 1.2     2008 	
TLS 1.3     2018

Solución para no poder instalar el proveedor NuGet para PowerShell

Ahora que reunimos toda la información, vamos a habilitar TLS 1.2 en el sistema. Ejecute ambos cmdlets para configurar claves de registro de criptografía segura de .NET Framework. Después de eso, reinicie PowerShell y verifique si se agrega el protocolo de seguridad TLS 1.2. Por último, instale el módulo PowerShellGet.

El primer cmdlet consiste en establecer una criptografía sólida en .Net Framework de 64 bits (versión 4 y superiores).

[PS] C:\>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

El segundo cmdlet sirve para establecer una criptografía sólida en .Net Framework de 32 bits (versión 4 y superiores).

[PS] C:\>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

Reinicie Powershell y verifique los protocolos de seguridad compatibles.

[PS] C:\>[Net.ServicePointManager]::SecurityProtocol
Tls, Tls11, Tls12

Ejecute el comando Install-Module PowershellGet -Force y presione Y para instalar el proveedor NuGet, luego presione Enter.

[PS] C:\>Install-Module PowershellGet -Force
 
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\administrator.EXOIP\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

El proveedor NuGet se descargó correctamente. ¿Te funcionó?

Conclusión

En este artículo, descubrió por qué no puede instalar el proveedor NuGet para PowerShell. La solución a este problema es configurar TLS1.2 o superior en el sistema. Después de eso, puede instalar NuGet para PowerShell. Disfrutaste este artículo? También te puede interesar Limpiar los registros de Exchange automáticamente con la tarea programada. No olvides seguirnos y compartir este artículo.

Artículos relacionados