Exchange Server 2016 – Unable to determine file version PowerShellEngine
After installing Exchange Server 2016 CU4 on Windows Server 2016, the Exchange Management Shell would fail to connect with the error:
New-PSSession : [xxxxxxxxxxxxxxxxxx] Processing data from remote server xxxxxxxxxxxxxxxxxx failed with the following error message: [ClientAccessServer=xxxxxxxxxxxxxxxxxx,BackEndServer=xxxxxxxxxxxxxxxxxx,RequestId=bc9549f6-b772-4933-8132-84dfcd57372d,TimeStamp=07/03/2017 12:25:32] [AuthZRequestId=7f855afa-31f2-4e46-bd1b-c1bf1ebc95f1][FailureCategory=AuthZ-SetupVersionInformationCorruptException] Unable to determine the installed file version from the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine'. For more information, see the about_Remote_Troubleshooting Help topic. At line:1 char:1
Of course I searched online, like a good Microsoft evangelist I tried Bing first and then when I didn’t find a suitable answer I resorted to Google. The only articles I found were ones talking about hacking the registry, which in my opinion is fine for a lab or dev server but not cool for a production server.
After some thinking about how Microsoft connects to Exchange via Remote PowerShell and the fact that there was a \3\PowerShellEngine key, I thought let’s try to install PowerShell-V2 and lo and behold it resolved the problem.
So it seems that Exchange Server 2016 CU4 on Windows Server 2016 needs PowerShell-V2 as a pre-requisite (eventhough it is not stated anywhere and it doesn’t install that feature itself when told to install dependent roles and features…) Anyway simple fix
Install-WindowsFeature PowerShell-V2