Search code examples
powershellssas

Where is this 0 coming from?


I wrote a script that adds roles/members to a database/cube.

For some reason, everytime a role/member is added, a 0 is outputted on the console. Where is that coming from? I am starting to suspect that the Analysis.Role property has a default 0 output, because when my if statement runs and the member already exists, so no role/member is added, no 0 is outputted. Only when a role doesn't exist a 0 is outputted because it's adding the role. So that's how I narrowed it down to that conclusion.

But if so, how can I suppress this "0"?

$ErrorActionPreference = 'SilentlyContinue' # suppress all exceptions

$as = New-Object Microsoft.AnalysisServices.Server  
$as.Connect("$server")

$db = $Analysis_Server.Databases.FindByName($CUBE)

$ROLE = $db.Roles.FindByName($CUBE_ROLE)
$member = "member1"

$memberExists = $false

if ($ROLE) {
    # if role exists already...check if group exists, or just add group
    $memberExists = $ROLE.Members.GetEnumerator() |
                    ?{$_.name -like $member} |
                    select -First 1 |
                    %{$True}

    if ($memberExists) { 
        Write-Host "already exists!"
    } else {
        $ROLE.Members.Add($member)
        $ROLE.Update()
    }

    $error.Clear()
    if ($error[0]) {
        Write-Host ("`r`nError Adding Group!" + "$($error[0])`r`n")
    }
}

zero


Solution

  • Change:

    $ROLE.Members.Add($member)
    

    to:

    $ROLE.Members.Add($member) | Out-Null
    

    If you add an object to an array using .Add(), its current index (0 in this case) will be returned.