Granting SharePoint Shell Administration access via PowerShell
Enabling a PowerShell user can be as simple as granting local admin rights and the following command:
Sometimes though there remain Content DBs for which the user doesn’t gain PowerShell access. In this case, the following command pipes in the content DBs and forces the PowerShell access granted:
get-spcontentdatabase | add-spshelladmin "DOMAIN\USER"
There are service application databases as well, and these could be all handled with this single command:
get-spdatabase | add-spshelladmin "DOMAIN\USER"
In the end what is required is the user having Securityadmin server role access on the SQL instance and the db_owner role in a database.
The securityAdmin role is required so that the underlying service accounts get granted the appropriate permissions, say when mounting a content DB.
Also a user must be a member of the SharePoint_Shell_Access role on the configuration database and a member of the WSS_ADMIN_WPG local group on the server (actually best to do on each server in the farm).