Analysis Services and powershell
It is usefull to be able to see analysis services configuration and browsing cube structure with powershell.
to achieve that, you first need to load the AMO assembly in Powershell :
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")
And then create a server object :
$serverAS = New-Object Microsoft.AnalysisServices.Server
And connect to your Analysis Services server :
$serverAS.connect("OPIERI02\R2")
Now, you can easily query your Analysis Services to know how it is configured :
$serverAS.serverproperties | select Name, Value
Or to know the list of databases that are stored on this Analysis Services Instance :
$serverAS.databases | select Name, EstimatedSize, StorageMode, LastProcessed
If, for a database, you want to have some information about the cube :
$db = $server.databases["MyDB"]
$db.cubes | select name, storagemode, lastprocessed
if, for the same database, you want info about dimensions
$db.dimensions | select name, isparentchild, lastprocessed, storagemode
If you want to see information about measure group in your database, you have to browse the cube collection as follow :
foreach ($c in $db.cubes) {
write-host $c.Name
foreach ($mg in $c.measuregroups) {
write-host $mg.name, $mg.estimatedsize, $mg.lastprocessed
}
}
You want to know if proactive cache is enable for partition ?
$cube = $db.cubes[“myCube”]
$mg = $cube.MeasureGroups[“myMG”]
Foreach ($p in $mg.partitions) { Write-host $p.Name, $p.estimatedSize, $p.proactivecaching.enabled}
To process all the cube for a database :
Foreach ($c in $db.cubes) {$c.process("ProcessFull")}
and to process all dimensions :
Foreach ($d in $db.dimensions) {$d.process("ProcessFull")}
And you can also backup an analysis services database with powershell:
$db.backup("myBackup.abf")
Enjoy !