Edit: This excellent post by MVP Michel de Rooij details the proper steps for upgrading .NET version and Exchange Cumulative Updates in the proper order

Due to recent issues with unsupported versions of .NET being installed on Exchange servers, as well as the fact that Exchange Server requires specific versions of .NET to be installed (Exchange Server 2013 System Requirements & Exchange Server 2016 System Requirements), there is a need to quickly query the installed version of .NET on Exchange servers. I have also been involved in several Exchange support escalations where updating the Exchange servers from .NET 4.5.1 to 4.5.2 resolved CPU performance issues.

Fortunately, my coworker and fellow Exchange MCM Mark Henderson wrote this quick and easy way to query the currently installed version of .NET.

PowerShell Query Method

To query the local Registry using PowerShell, execute the below command in an elevated PowerShell session.

(Get-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full’ -Name Release).Release

You can then use the table below to reference the installed version of .NET. For instance, if the returned value is 379893, then .NET 4.5.2 is installed.

Version Value of the Release DWORD .NET Framework 4.5 378389 .NET Framework 4.5.1 installed with Windows 8.1 378675 .NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2 378758 .NET Framework 4.5.2 379893 .NET Framework 4.6 installed with Windows 10 393295 .NET Framework 4.6 installed on all other Windows OS versions 393297 .NET Framework 4.6.1 installed on Windows 10 394254 .NET Framework 4.6.1 installed on all other Windows OS versions 394271 NET Framework 4.6.1 installed on all other Windows OS versions (With required Hotfix) 394294 .NET Framework 4.6.2 installed on Windows 10 Anniversary Update 394802 .NET Framework 4.6.2 installed on all other Windows OS versions 394806 .NET Framework 4.7.0 installed on Windows 10 Creators Update 460798 .NET Framework 4.7.0 installed on all other Windows OS versions 460805 .NET Framework 4.7.1 installed on Windows 10 Fall Creators Update 461308 .NET Framework 4.7.1 installed on all other Windows OS versions 461310

Copy the below text into a text file and rename the extension to .ps1. You can then execute this script and have it automatically tell you the installed version of .NET.Script method

# Determine the version of .net 4 framework by querying Registry HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full for Value of Release

#

# Based on https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx

#

#

#

$Netver = (Get-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full’ -Name Release).Release

If ($Netver -lt 378389)

{

Write-Host “.NET Framework version OLDER than 4.5” -foregroundcolor yellow

}

ElseIf ($Netver -eq 378389)

{

Write-Host “.NET Framework 4.5” -foregroundcolor red

}

ElseIf ($Netver -le 378675)

{

Write-Host “.NET Framework 4.5.1 installed with Windows 8.1” -foregroundcolor red

}

ElseIf ($Netver -le 378758)

{

Write-Host “.NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2” -foregroundcolor red

}

ElseIf ($Netver -le 379893)

{

Write-Host “.NET Framework 4.5.2” -foregroundcolor red

}

ElseIf ($Netver -le 393295)

{

Write-Host “.NET Framework 4.6 installed with Windows 10” -foregroundcolor red

}

ElseIf ($Netver -le 393297)

{

Write-Host “.NET Framework 4.6 installed on all other Windows OS versions” -foregroundcolor red

}

ElseIf ($Netver -le 394254)

{

Write-Host “.NET Framework 4.6.1 installed on Windows 10” -foregroundcolor red

}

ElseIf ($Netver -le 394271)

{

Write-Host “.NET Framework 4.6.1 installed on all other Windows OS versions” -foregroundcolor red

}

ElseIf ($Netver -le 394294)

{

Write-Host “.NET Framework 4.6.1 installed on all other Windows OS versions (With required Hotfix)” -foregroundcolor red

}

ElseIf ($Netver -le 394802)

{

Write-Host “.NET Framework 4.6.2 installed on Windows 10 Anniversary Update” -foregroundcolor red

}

ElseIf ($Netver -le 394806)

{

Write-Host “.NET Framework 4.6.2 installed on all other Windows OS versions” -foregroundcolor red

}

ElseIf ($Netver -le 460798)

{

Write-Host “.NET Framework 4.7.0 installed on Windows 10 Creators Update” -foregroundcolor red

}

ElseIf ($Netver -le 460805)

{

Write-Host “.NET Framework 4.7.0 installed on all other Windows OS versions” -foregroundcolor red

}

ElseIf ($Netver -le 461308)

{

Write-Host “.NET Framework 4.7.1 installed on Windows 10 Fall Creators Update” -foregroundcolor red

}

ElseIf ($Netver -le 461310)

{

Write-Host “.NET Framework 4.7.1 installed on all other Windows OS versions” -foregroundcolor red

}



References:

How to: Determine Which .NET Framework Versions Are Installed

