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.