Connect to your specific SQL analysis instance and go through properties to security. You should see that there is no Service Agent in the list of Server Administrators.

After executing my PowerShell script (below), the agent has been added.
The following PowerShell function will get the SQL service login name associated with the specified computer and will add that user to the Analysis Server administrator group.
  1. Function Add-SqlServiceLogonAccount
  2. {
  3. [CmdletBinding()]
  4. param
  5. (
  6. [parameter(Mandatory=$true)]
  7. [string] $SqlServerInstance = $env:computername,
  8. [parameter(Mandatory=$true)]
  9. [string] $AnalysisServerInstance,
  10. $ComputerName = $env:computername
  11. )
  12. try
  13. {
  14. $ValidAnalysis = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices") | Out-String
  15. if([string]::IsNullOrWhitespace($ValidAnalysis))
  16. {
  17. throw "Unable to find either Microsoft.AnalysisServices.AdomdClient or Microsoft.AnalysisServices in GAC"
  18. }
  19. $SqlInstance = $SqlServerInstance.Split("\")
  20. #Getting the required SQL services running for both default localhost and as well for new Instances
  21. if($SqlServerInstance -match "\\")
  22. {
  23. $SqlInstance = "SQLAgent`$$($SqlInstance[1])"
  24. }
  25. else
  26. {
  27. $SqlInstance = "SQLSERVERAGENT"
  28. $SqlServiceDetails = Get-WmiObject -Class Win32_Service -ComputerName $ComputerName |
  29. select name,DisplayName, StartName, State |
  30. Where {$_.name -eq "$SqlInstance" -and $_.State -eq "Running" }
  31. }
  32. [string]$loginName = [string]::Empty
  33. if($SqlServiceDetails -ne $null)
  34. {
  35. if($SqlServiceDetails.Name -eq $SqlInstance)
  36. {
  37. $loginName = $SqlServiceDetails.StartName
  38. }
  39. }
  40. if(![string]::IsNullOrWhitespace($loginName))
  41. {
  42. $Targetserver = new-Object Microsoft.AnalysisServices.Server
  43. $Targetserver.Connect($AnalysisServerInstance)
  44. #Getting members under the role Administrators
  45. $administrators = $Targetserver.Roles["Administrators"]
  46. #checking for the existence of loginname, if not exists adding member to Administrators group
  47. if ($administrators.Members.Name -notcontains $loginName)
  48. {
  49. Write-Host "Adding the agent logon account $loginName to the Administrators group"
  50. $administrators.Members.Add($loginName) | Out-Null
  51. $administrators.Update()
  52. Write-Host "Adding the agent logon account $loginName to the Administrators group"
  53. }
  54. else
  55. {
  56. Write-Verbose "$loginName was already added to the Administrators group"
  57. }
  58. $Targetserver.Disconnect()
  59. }
  60. }
  61. catch
  62. {
  63. throw $_.Message
  64. }
  65. }

Here are some examples of the above script in use. Check the instance after running to ensure the user has been added correctly (as indicated in Figure 2 above)

Example 1 - Default SQL and Analysis instance
  1. Add-SqlServiceLogonAccount -SqlServerInstance "localhost" -AnalysisServerInstance "localhost"
Example 2 - Named SQL and Analysis instance
  1. Add-SqlServiceLogonAccount -SqlServerInstance "pc-name\local" -AnalysisServerInstance "pc-name\local"