通过PowerShell导出SSAS Tabular角色无返回结果问题求助
问题原因
- 缺少结果输出语句:脚本将角色信息存入
$Result变量后没有执行输出操作,运行后自然无内容返回。 - 程序集加载异常:代码中
LoadWithPartialName的参数使用了中文双引号,会导致程序集加载失败;同时你加载的Microsoft.AnalysisServices.Tabular不是实例化SSAS服务对象所需的核心AMO程序集,部分环境下会出现属性读取不全的问题。 - 权限不足:运行PowerShell的账号没有SSAS实例的访问权限,非管理员账号默认无法读取数据库角色列表,会返回空集合且无报错。
- 代码冗余:你先后两次实例化
Microsoft.AnalysisServices.Server对象,第一次的实例完全未使用,对应的加载成功校验逻辑也无效。
修复后代码
# 加载核心AMO程序集 Add-Type -AssemblyName "Microsoft.AnalysisServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" -ErrorAction Stop # SSAS服务器名,默认.代表本地默认实例,如果是命名实例请写为"服务器名\实例名" $SSASServerName = "." # 连接SSAS服务器 $SSASServer = New-Object Microsoft.AnalysisServices.Server try { $SSASServer.Connect($SSASServerName) } catch { Throw "无法连接到SSAS服务器:$_" exit } $Result = @() foreach ($DB in $SSASServer.Databases) { foreach ($Role in $DB.Roles) { foreach ($UserName in $Role.Members) { $ItemResult = [PSCustomObject]@{ DatabaseName = $DB.Name RoleName = $Role.Name UserName = $UserName.Name } $Result += $ItemResult } } } # 输出结果 $Result # 如果需要导出到CSV,取消注释下一行即可 # $Result | Export-Csv -Path "C:\SSAS角色列表.csv" -NoTypeInformation -Encoding UTF8 # 断开连接 $SSASServer.Disconnect()
验证说明
如果运行后依然无返回,先确认当前PowerShell运行账号已被添加为SSAS实例的管理员,或拥有对应数据库的读取权限。
内容的提问来源于stack exchange,提问作者Michael Scott
相关产品推荐
相关产品推荐

