Raw Text Content QR Edit Remove
spider-seal-goat



# 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