Check for .Net version script

I was helping a customer install Exchange 2016 this week and they completed a base Windows Server 2012 R2 image and fully patched it. I then advised them that .Net 4.6.1 is not supported and that nothing above 4.5.2 is currently supported (Exchange Supportability Matrix). We un-installed the .Net 4.6.1 update, then we checked, .Net version was still 4.6.0081. Hmmm…. Found the other updates and removed those to get back to .Net 4.5.2.

The moral of the story is .Net 4.6.x has been available for updates to the OS since August, 2015. Thus my bigger concern is that the eHelo blog post is already 6 months outdated. So to help customers at least see if they have a higher version of .Net installed and more specifically, sift through all of the different KB article updates, I created this simple script.

The script checks for either server version 2012 or 2012R2 and the three patches we had to remove to get back to .Net 4.5.2. I’ve added some logic to help engineers see which patches they have installed onto their servers. Furthermore, you’ll want to re-install .Net 4.5.2 after you’ve gone through the removal of the newer versions.

Also posted over on the Skype blog, the Skype for Business team has a similar support stance with .Net 4.6.1.

Therefore, you need to be careful and watch the product group pages for more information for when this new version of .Net will be supported. We also expect a possible update needed to be applied to Exchange and/or Lync/Skype for Business servers to solve the issue.

Update 10/4/17: Added check for Windows Server 2016 in the code and updated the .NET values to include through 4.7. Also changed the output a bit to reflect the Exchange version(s) supported. With the changing of CU's and .NET versions, you have to confirm the Exchange version as to which one is supported and which one is not supported. This script only looks at the Windows OS and not comparing or looking up the current Exchange version that you may or may not have installed on the server.