Exchange 2010 sp3 not upgrading.

Recently in support we've noticed an abnormal amount of cases come in regarding upgrading Exchange 2010 sp3.  Now normally with upgrade cases they can be traced back to not having the correct permissions, broken permissions, or another sort of restriction.  Lately we've had several cases come in where the upgrade will start, then after a few minutes it will instantly start rolling back the update, it won't even place a watermark into the registry.  Because of these behaviors I figured I'd throw up a check list for customers to follow when you run into issues like this.  So the one thing that triggered this post was because of the oddity when you have netapp installed on your server, it would appear that netapp has a config file for PowerShell, when Exchange is upgrading it reads this and tries to use a different version of PowerShell, or for some other reason causes the upgrade to fail.  If you have netapp and are running into this issue check the fallowing location\file.

Location: C:\Program Files (x86)\CommonFiles\NetApp\
File: PowerShell.exe.Activation.Config

Example of file we've notice cause some issues:

<configuration>  
<startupuseLegacyV2RuntimeActivationPolicy="true">             
<supportedRuntime version="v4.0.30319"/>           
<supportedRuntime version="v2.0.50727"/>                
<supportedRuntime version="v1.1.4322"/>                   
<supportedRuntime version="v1.0.3705"/>
</startup>
</configuration>

Modified file:

<configuration> 
<startupuseLegacyV2RuntimeActivationPolicy="true">    
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v1.1.4322"/>
<supportedRuntime version="v1.0.3705"/>
</startup>
</configuration> 

So, I've also seen instances where the only information in the config file shows:

<configuration>  
<startupuseLegacyV2RuntimeActivationPolicy="true">             
<supportedRuntime version="v4.0.30319"/>     
</startup>
</configuration>

When\if you notice this I've been able to resolve this by just adding in the 2.0 version.
 
<configuration> 
<startupuseLegacyV2RuntimeActivationPolicy="true">    
<supportedRuntime version="v2.0.50727"/>    
<supportedRuntime version="v4.0.30319"/>
</startup>
</configuration> 

So now the question is, what do I do if I'm having install\upgrade issues and I don't have netapp?  Well for this scenario I always start with any errors that you're getting, if the errors are generic then best option is to start from the beginning with permissions.  Also make sure that the fallowing groups have inheritance enabled, sometimes when inheritance is broken the permissions are not handed down properly.

Permissions required:

Domain Admins
Enterprise Admins
Organization Management

Next would be to run the install\upgrade package from an administrative command prompt.  Also, if permissions have been changed remember to log off the server and log back in.  If that fails you will want to check and make sure you don't have powershell 3.0 installed, we've notice this has caused issues since it's not fully compatible with Exchange 2010.  Also, make sure the OU that the Exchange Servers are in don't have any GPO's that could be causing issues.

https://blogs.technet.microsoft.com/exchange/2012/12/14/windows-management-framework-3-0-on-exchange-2007-and-exchange-2010/

If Permissions look good you can move to changing the execution policy that Exchange is running under, if it is on anything other than unrestricted it can cause upgrade issues.  To modify just run the command below in Exchange Management Shell and it should change the policy.

Set-ExecutionPolicy Unrestricted

If that still doesn't resolve the issue you can clear out the temp directory on the server, located at c:\windows\temp\.

If issues persist it would probably be best to open a case with support.