Ran into an interesting logic puzzle today where upgrading to .Net 4 made SharePoint PowerShell angry. Had to chase my tail a little bit since the lab system I was troubleshooting had some other interesting configuration challenges with a single account which was both the install and database access account, but the real problem statement would have been something like this:
"When I launch the SharePoint Management Shell, I get the unhelpful error message which says: "The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered" :
I *thought* I was looking at an issue with account permissions and the SharePoint_Shell_Access role, and I was, but not for this error. I also noticed that the window didn't say anything about SharePoint, just Powershell. And apparently I haven't been the only one confused by this:
So what's the deal? Here's the short answer: You need the magic of "-v 2" in your powershell shortcut, like this:
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -v 2 -NoExit " & ' C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\CONFIG\POWERSHELL\Registration\\sharepoint.ps1 ' "
relaunch and all is good. No need to uninstall .Net 4.0 as some blogs have suggested.