Impossibile installare il provider NuGet per PowerShell
Recentemente stavo cercando di installare il modulo Powershell MSOnline per il collegamento con Office 365 e mi sono ritrovato davanti a questo errore:

Il problema è che per scaricare il modulo MSOnline è necessario installare il provider NuGet che però genera degli errori e PowerShell non riesce a scaricarlo.
Proviamo a forzarne l’installazione tramite il comando Install-Module PowershellGet – Force. Quando ci viene richiesto di installare il provider NuGet rispondiamo Y e pigiamo Invio.

Anche in questo caso però otteniamo diversi Warning e l’installazione non termina.

Vediamo come prima cosa che versione di Powershell è installata.

Powershell 5.1 abilita l’SSL 3.0 e il TLS 1.0 per le comunicazioni https. Verifichiamo ora i protocollli TLS disponibili.

Come possiamo vedere sono abilitati i protocolli SSL 3.0 e TLS 1.0. Entrambi i protocolli sono deprecati. Attualmente gli unici consentiti sono TLS 1.2 e TLS 1.3.
Ora che abbiamo individuato il problema vediamo come abilitare le nuove versioni di TLS.
Il primo comando da lanciare è per abilitare la strong cryptografy nel framework a 64bit:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Il secondo comando è per abilitare la strong cryptografy nel framework a 32bit:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
A questo punto riavviamo Powershell e verifichiamo ora i protocolli di sicurezza abilitati con il comando:

Adesso possiamo provare a rilanciare il comando Install-Module PowershellGet -Force per installare il provider Nuget:

NuGet ora si dovrebbe installare senza problemi.