Powershell – nuget Download schlägt fehl – Fehler beheben

Es findet ja immer und immer mehr online statt und hierzu müssen auch die entsprechenden Module in der Powershell nach installiert werden. Hier im Beispiel wollte ich das Exchange Online Modul nachinstallieren und bin damit direkt auf dem Server auf die Nase geflogen. Denn für diese Installation wird auch der NuGet Paketmanager benötigt und genau bei der Installation dessen kam es zur folgender Fehlermeldung.

Zuerst denkt man sich natürlich …huch, was ist nun los. Checkt ob der Server ins Internet darf, versucht die URL zu erreichen und alles funktioniert irgendwie und dennoch meldet die Powershell, dass der Download nicht möglich ist.

Fehlermeldung in der Powershell:

WARNUNG: Es kann kein Download von URI "https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409" nach "" durchgeführ
t werden.
WARNUNG: Die Liste der verfügbaren Anbieter kann nicht heruntergeladen werden. Überprüfen Sie Ihre Internetverbindung.
PackageManagement\Install-PackageProvider : Für die angegebenen Suchkriterien für Anbieter "NuGet" wurde keine 
Übereinstimmung gefunden. Der Paketanbieter erfordert das PackageManagement- und Provider-Tag. Überprüfen Sie, ob das 
angegebene Paket über die Tags verfügt.
In C:\Program Files\WindowsPowerShell\Modules\PowerShellGet.0.0.1\PSModule.psm1:7405 Zeichen:21
+ ...     $null = PackageManagement\Install-PackageProvider -Name $script:N ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-Pa 
   ckageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackagePr 
   ovider
 
PackageManagement\Import-PackageProvider : Für die angegebenen Suchkriterien und den Anbieternamen "NuGet" wurde 
keine Übereinstimmung gefunden. Führen Sie "Get-PackageProvider -ListAvailable" aus, um festzustellen, ob der 
Anbieter im System vorhanden ist.
In C:\Program Files\WindowsPowerShell\Modules\PowerShellGet.0.0.1\PSModule.psm1:7411 Zeichen:21
+ ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackagePro 
   vider
 
WARNUNG: Es kann kein Download von URI "https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409" nach "" durchgeführ
t werden.
WARNUNG: Die Liste der verfügbaren Anbieter kann nicht heruntergeladen werden. Überprüfen Sie Ihre Internetverbindung.
PackageManagement\Get-PackageProvider : Der Paketanbieter "NuGet" wurde nicht gefunden, da er möglicherweise noch 
nicht importiert wurde. Versuchen Sie es mit "Get-PackageProvider -ListAvailable".
In C:\Program Files\WindowsPowerShell\Modules\PowerShellGet.0.0.1\PSModule.psm1:7415 Zeichen:30
+ ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProv 
   ider], Exception
    + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPack 
   ageProvider
 
Find-Module : Der NuGet-Anbieter ist für die Interaktion mit NuGet-basierten Repositorys erforderlich. Stellen Sie 
sicher, dass 2.8.5.201 oder eine neuere Version des NuGet-Anbieters installiert ist.
In Zeile:1 Zeichen:1
+ Find-Module -Name ExchangeOnlineManagement
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Find-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Find-Module

Doch and was liegt dies?
Das System versucht auf die Lookup Provider (onegetcdn.azureedge.net/providers) zuzugreifen und schlägt dabei fehl. Der Grund dafür ist im Grunde ganz einfach! Denn seit Mitte 2020 lässt der benötigte Endpunkt keine Verbindungen unter TLS1.2 zu. Bei der Powershell ist jedoch per Default TLS1.1 hinterlegt. Tja, und so verweigert der Zielserver die Kommunikation mit unserer Powershell.

Gut, jetzt könnt ihr Euch die Lösung des Problems natürlich schon denken. Wir müssen der Powershell sagen, dass diese mit TLS1.2 den Server kontaktiert und dies erledigen wir mit folgendem Befehl:

Fehlerbehebung:

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

Die Ausführung wird nicht weiter bestätigt und es wird Euch nur eine neue Zeile in der Powershell gezeigt. Aber ihr könnt direkt danach die Installation der fehlgeschlagenen Module testen und ihr werdet sehen. Es funktioniert wieder alles wie gewünscht.

Die mobile Version verlassen