Microsoft hat in der Windows PowerShell die Möglichkeit geschaffen, dass nachträglich weitere Module hinzugefügt und installiert werden können. Dies ist immer dann nützlich, wenn man weitere Module installieren möchte, die zum Beispiel nicht von Microsoft direkt kommen. Eins dieser Module ist PSWindowsUpdate (Weitere Infos hier), ein Modul zur Verwaltung von Windows Update.
Das PSWindowsUpdate Modul
Das Modul ermöglicht eine sehr gute Steuerung der Windows Updates und es können über Parameter nahezu alle Optionen und Möglichkeiten voll genutzt werden. Es kann nur nach Updates gesucht werden, und dies wahlweise über die Systemeinstellungen, von Windows Update direkt online oder auch mit einem custom WSUS Server. Das Modul ist auf jeden Fall einen Blick wert und ermöglicht auch z.B. die geplante Update-Installation mittels PowerShell und Taskplaner.
Die Fehlermeldung bei der Installation
Als ich auf einem Windows Server 2016 versucht habe, das Modul zu installieren, kam direkt eine Information, dass NuGet aktualisiert werden muss. NuGet ist verantwortlich für den Download weiterer Module und sollte möglichst aktuell gehalten werden. Ein Update hat aber nicht geklappt, es erschien immer wieder die Fehlermeldung
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ügbar ist.
Die Lösung
Die Fehlermeldung ist ein bisschen komisch und sagt nichts darüber aus, was das eigentliche Problem ist.
Technisch wird bei dem Download mittlerweile TLS1.2 benötigt. Dies ist bei Betriebssystemen bis einschließlich Windows Server 2016 nicht der Fall, daher kommt es zu der Fehlermeldung. Lösen kann man das Problem ganz einfach, indem man die folgende Zeile in der PowerShell ausführt:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Danach kann direkt eine Installation bzw. ein Update versucht werden, dies klappt dann direkt:
Update Februar 2023
Ich hatte gerade einen Windows Server 2019, der sich nicht zu einer Installation bewegen ließ, auch nicht mit den oben genannten Einstellungen. Grund hier war, dass die PSGallery nicht eingetragen war als Installationsquelle. Überprüfen lässt sich das mit
Get-PSRepository
Wird hier nix angezeigt, fehlt diese Quelle. Man kann die Standard-Quelle wieder hinzufügen mit
Register-PSRepository -Default
Danach ging dann auch wieder ein Download der Pakete über den Online-Bereich. Falls es nicht direkt geht, vorher die TLS1.2 Einstellung wie oben beschrieben setzen.
Pingback:Windows PowerShell: Installation von NuGet schlägt fehl – blog.friedlandreas.net