Let me provide you fresh experience with Exchange 2010 SP3 upgrade.
In the first place, thank you Zbynek, because final solution was his idea!
Exchange 2010 SP3 upgrade unexpectedly failed for 2 servers from 9. Those servers had separated Exchange roles. So the following error occurred for MBX as well as HUB role.
[10/05/2013 18:58:41.0984]  Saving object "EXMBX02\PowerShell-Proxy (Default Web Site)" of type "ADPowerShellVirtualDirectory" and state "New". [10/05/2013 18:58:42.0015]  Previous operation run on domain controller 'DC03.contoso.local'. [10/05/2013 18:58:43.0481]  Searching objects "DEXMBX02\PowerShell-Proxy (Default Web Site)" of type "ADPowerShellVirtualDirectory" under the root "$null". [10/05/2013 18:58:43.0497]  Previous operation run on domain controller 'DC03.contoso.local'. [10/05/2013 18:58:43.0497]  Ending processing new-PowerShellVirtualDirectory [10/05/2013 18:58:43.0497]  The following 1 error(s) occurred during task execution: [10/05/2013 18:58:43.0497]  0. ErrorRecord: A failure occurred while trying to update metabase properties. [10/05/2013 18:58:43.0497]  0. ErrorRecord: Microsoft.Exchange.Data.Common.LocalizedException: A failure occurred while trying to update metabase properties. ---> System.Runtime.InteropServices.COMException (0x80070003): The system cannot find the path specified.
As can be seen it was IIS related problem (a failure occurred while trying to update metabase properties) especially with PowerShellVirtualDirectory.
- firewall or application (e.g. an anti-virus) was cutting the connection
- an application was locking the IIS metabase (e.g. a backup solution)
- not sufficient permissions
This solution is intended for separated (CAS, MBX, HUB) as well as multi roles.
1. Remove corrupted PowerShellVirtualDirectory:
* remove all virtual directories whether CAS role
Get-PowerShellVirtualDirectory EXMBX02\* | Remove-PowerShellVirtualDirectory
2. Recover Exchange server:
- Exchange SP3 fails upgrade on Hub Transport Role
- Exchange 2010 SP1 or SP2 trouble with: The virtual directory ‘PowerShell’ already exists
- Recover an Exchange Server
- Recover a Database Availability Group Member Server
- Call-ClusterExe: cluster.exe did not succeed, but 5058 was not a retry-able error code