How do I detect what .NET Framework versions and service packs are installed?

后端 未结 13 1776
滥情空心
滥情空心 2020-11-22 01:31

A similar question was asked here, but it was specific to .NET 3.5. Specifically, I\'m looking for the following:

  1. What is the correct way to determine which .N
13条回答
  •  逝去的感伤
    2020-11-22 02:13

    Here is a PowerShell script to obtain installed .NET framework versions

    function Get-KeyPropertyValue($key, $property)
    {
        if($key.Property -contains $property)
        {
            Get-ItemProperty $key.PSPath -name $property | select -expand $property
        }
    }
    
    function Get-VersionName($key)
    {
       $name = Get-KeyPropertyValue $key Version
       $sp = Get-KeyPropertyValue $key SP
       $install = Get-KeyPropertyValue $key Install
       if($sp)
       {
            "$($_.PSChildName) $name SP $sp"
       }
       else{
        "$($_.PSChildName) $name"
       }
    }
    
    function Get-FrameworkVersion{
       dir "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\" |? {$_.PSChildName -like "v*"} |%{
        if( $_.Property -contains "Version")
        {
            Get-VersionName $_
        }
        else{
            $parent = $_
            Get-ChildItem $_.PSPath |%{
                $versionName = Get-VersionName $_
                "$($parent.PSChildName) $versionName"
                }
            }
        }
    }
    
    
    $v4Directory = "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
    if(Test-Path $v4Directory)
    {
        $v4 = Get-Item $v4Directory
        $version = Get-KeyPropertyValue $v4 Release
        switch($version){
            378389 {".NET Framework 4.5"; break;}
            378675 {".NET Framework 4.5.1 installed with Windows 8.1 or Windows Server 2012 R2"; break;}
            378758 {".NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2"; break;}
            379893 {".NET Framework 4.5.2"; break;}
            { 393295, 393297 -contains $_} {".NET Framework 4.6"; break;}
            { 394254, 394271 -contains $_} {".NET Framework 4.6.1"; break;}
            { 394802, 394806 -contains $_} {".NET Framework 4.6.2"; break; }
        }
    }
    

    It was written based on How to: Determine Which .NET Framework Versions Are Installed. Please use THE Get-FrameworkVersion() function to get information about installed .NET framework versions.

提交回复
热议问题