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")
}
}
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.