Unable to install Roll Update on Exchange servers. Update Rollup Setup reverts to "Rolling Back Actions"

Recently came up with few cases where the customer were unable to install the Rollup Update on Exchange servers.
The Update Rollup Setup would revert to "Rolling Back Actions" screen after the "Stopping Services" screen.

We started the update from Admin CMD using the following cmdlet
C:\Sources\Exchange 2010 SP3 UR 18>msiexec /update c:\temp\Exchange2010-KB4018588-x64-en.msp /lxv* c:\temp\ru18.log

We could see the following error in the Exchange Setup log

CAQuietExec:  Error 0x80070001: Command line returned an error.
CAQuietExec:  Error 0x80070001: CAQuietExec Failed
CustomAction CA_ROLLBACK_SAVEDATA_STOP_SERVICES returned actual error code 1603 but will be translated to success due to continue markingMSI (s) (E0:24) [05:57:33:800]: Executing op: ActionStart(Name=CA_CUSTOMER_PREPATCH_INSTALL,,)
MSI (s) (E0:24) [05:57:33:800]: Executing op: ActionStart(Name=CA_CUSTOMER_PATCH_ROLLBACK,,)
MSI (s) (E0:24) [05:57:33:800]: Executing op: CustomActionRollback(Action=CA_CUSTOMER_PATCH_ROLLBACK,ActionType=1345,Source=BinaryData,Target=CAQuietExec,CustomActionData="C:\Program Files\Microsoft\Exchange Server\V14\\bin\QuietExe.exe" "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" " -Version 2.0 -command . 'C:\Program Files\Microsoft\Exchange Server\V14\\scripts\customization\CustomPatchInstallerActions.ps1' PatchRollbackActions")
MSI (s) (E0:80) [05:57:33:847]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI4D10.tmp, Entrypoint: CAQuietExec
CAQuietExec:  Error 0x80070001: Command line returned an error.
CAQuietExec:  Error 0x80070001: CAQuietExec Failed
MSI (s) (E0:24) [05:57:34:923]: Executing op: End(Checksum=0,ProgressTotalHDWord=0,ProgressTotalLDWord=0)
MSI (s) (E0:24) [05:57:34:923]: Error in rollback skipped. Return: 5
CustomAction CA_CUSTOMER_PATCH_ROLLBACK returned actual error code 1603 but will be translated to success due to continue marking
MSI (s) (E0:24) [05:57:34:939]: Note: 1: 2318 2:
MSI (s) (E0:24) [05:57:34:939]: No System Restore sequence number for this installation.
MSI (s) (E0:24) [05:57:34:939]: Unlocking Server
MSI (s) (E0:24) [05:57:35:001]: PROPERTY CHANGE: Deleting UpdateStarted property. Its current value is '1'.
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Transforming table InstallExecuteSequence.
MSI (s) (E0:24) [05:57:35:017]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038
Action ended 5:57:35: INSTALL. Return value 3.
MSI (s) (E0:24) [05:57:35:017]: Product: Microsoft Exchange Server - Update 'Update Rollup 18 for Exchange Server 2010 Service Pack 3 (KB4018588) 14.3.361.1' could not be installed. Error code 1603. Additional information is available in the log file c:\temp\exchange2010KB.log.
MSI (s) (E0:24) [05:57:35:017]: Windows Installer installed an update. Product Name: Microsoft Exchange Server. Product Version: 14.3.123.4. Product Language: 1033. Manufacturer: Microsoft Corporation. Update Name: Update Rollup 18 for Exchange Server 2010 Service Pack 3 (KB4018588) 14.3.361.1. Installation success or error status: 1603.

We could see that Exchange setup was trying to use PowerShell Version 2.0 but due to some issues it could not.
We checked the version of PowerShell

PS C:\Windows\system32> $psversiontable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18444
BuildVersion                   6.3.9600.18728
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

We could see PowerShell Version 4.0 was used due to which Exchange setup was reverting to “Rolling Back Actions” since Exchange is not compatible with Powershell 3.0 and above.

Process Monitor also showed that it was looking at the file  “powershell.exe.activation_config” in following location "C:\Program Files (x86)\Common Files\NetApp\powershell.exe.activation_config"

We moved the  following file, and restart the SnapDrive Services on the box.

Based on the Symptoms, NetAPP's SnapDrive custom config file was forcing  PowerShell to run as 4.0 vs 2.0.

Exchange 2010 setup runs PowerShell scripts that are incompatible with PowerShell 3.0 and above, since NETAPP  was forcing 3.0 via it's custom PowerShell config file, exchange setup scripts fail.

We managed to install the RU on the box.

 -Raghav