# PowerShell-skript: Lista ALLA .NET-versioner (Framework + Core/5+)
$results = @()
### .NET Framework (via registret)
$netfx = Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
Get-ItemProperty -ErrorAction SilentlyContinue |
Where-Object { $_.Version -ne $null -or $_.Release -ne $null } |
Select-Object PSChildName, Version, Release
foreach ($fx in $netfx) {
$version = $fx.Version
if ($fx.Release) {
switch ($fx.Release) {
{ $_ -ge 528040 } { $version = "4.8 eller senare"; break }
{ $_ -ge 461808 } { $version = "4.7.2"; break }
{ $_ -ge 461308 } { $version = "4.7.1"; break }
{ $_ -ge 460798 } { $version = "4.7"; break }
{ $_ -ge 394802 } { $version = "4.6.2"; break }
{ $_ -ge 394254 } { $version = "4.6.1"; break }
{ $_ -ge 393295 } { $version = "4.6"; break }
{ $_ -ge 379893 } { $version = "4.5.2"; break }
{ $_ -ge 378675 } { $version = "4.5.1"; break }
{ $_ -ge 378389 } { $version = "4.5"; break }
}
}
$results += [PSCustomObject]@{
Runtime = ".NET Framework"
Name = $fx.PSChildName
Version = $version
}
}
### .NET Core / .NET 5+ (via Program Files)
$dotnetPath = "C:\Program Files\dotnet\shared"
if (Test-Path $dotnetPath) {
Get-ChildItem $dotnetPath -Directory | ForEach-Object {
$runtime = $_.Name
Get-ChildItem $_.FullName -Directory | ForEach-Object {
$results += [PSCustomObject]@{
Runtime = $runtime
Name = $_.Name
Version = $_.Name
}
}
}
}
### Visa resultatet snyggt
$results | Sort-Object Runtime, Version | Format-Table -AutoSize