Zu viele SDKs auf der Festplatte
Wer – wie der Autor dieses Beitrags – immer am Puls der Zeit entwickelt bzw. Kunden berät, auf dessen Festplatte sammeln sich zahlreiche SDK-Installationen an.
Abbildung 1 zeigt den Dateisystemordner C:\Program Files\dotnet\sdk auf einem der Entwickungsrechner des Autors mit zahlreichen SDK-Versionen insbesondere von .NET-Core-Versionen 2.1 und 2.2. Auf der Festplatte brauchen die SDK-Installationen zwischen 338 und 497 MB (siehe Apps & features in den modernen Windows Settings von Windows 10 (Abb. 2)).
Eine Liste der installierten SDKs erhält ein Softwareentwickler auch über den Kommandozeilenbefehl dotnet.exe --list-sdks (Abb. 3).



Manuelle Deinstallation
Natürlich lassen sich die SDK-Versionen händisch deinstallieren. Hierzu sind aber einige Mausklicks in den Apps & features in den Settings notwendig.
Deinstallation per PowerShell und WMI
Eleganter geht es natürlich immer über die Kommandozeile. Hier soll die PowerShell zum Einsatz kommen, um all die zahlreichen SDK-Versionen per Skript zu deinstallieren. Kern der Lösung ist das PowerShell Commandlet Get-CimInstance, dass alle Instanzen einer Windows Management Instrumentation (WMI)-Klasse auflistet. Die WMI-Klasse, in der auch die .NET-Core-SDK-Installationen erfasst sind, heißt Win32_Product.
Die folgende PowerShell Pipeline liefert alle Win32_Product-Objekte, deren Name die Zeichenfolgen .NET Core SDK 2.1 und Preview enthält:
get-ciminstance "Win32_Product" -filter "Name LIKE '%.NET Core SDK 2.1%' and Name LIKE '%Preview%'" | ft name, version
Zu beachten ist, dass Win32_Product leider eine sehr langsame WMI-Klasse ist. Nach einiger Wartezeit ist die Konsolenausgabe im obigen Fall (Abb. 1 bis 3) dann:
name version ---- ------- Microsoft .NET Core SDK 2.1.500 - preview (x64) 8.125.9297 Microsoft .NET Core SDK 2.1.500 - preview (x64) 8.125.9335 Microsoft .NET Core SDK 2.1.800 - preview (x64) 8.216.9677 Microsoft .NET Core SDK 2.1.700 - preview (x64) 8.191.9601 Microsoft .NET Core SDK 2.1.600 - preview (x64) 8.150.9426 Microsoft .NET Core SDK 2.1.700 - preview (x64) 8.191.9618 Microsoft .NET Core SDK 2.1.600 - preview (x64) 8.150.9497 Microsoft .NET Core SDK 2.1.300 - Preview (x64) 8.91.8174
Das Skript in Listing 1 löscht al...