如何添加角色,成员和权限?

时间:2019-05-08 23:10:52

标签: powershell ssas

我正在尝试将角色和成员添加到表格数据库(多维数据集)

$Server = new-Object Microsoft.AnalysisServices.Tabular.Server
$Server.Connect("$server")

$TabDB = $Tabular_Analysis_Server.Databases[$DB]

[Microsoft.AnalysisServices.Tabular.ModelRole] $AddRole = new-Object([Microsoft.AnalysisServices.Tabular.ModelRole])("NewRole1")

$AddRole.Members.Add("member1")

$TabDB.Roles.Add($AddRole)

$AddRole.Update()

我收到此错误:

  

new-Object:找不到“ ModelRole”和参数的重载   计数:“ 1”。   和

这个$TabDB.Model.Roles.members给了我很好的角色和成员

如果我尝试这样做:

$TabDB.Model.roles.Add("newrole1")

我收到此错误

  

找不到“ Add”的重载以及参数计数为“ 1”。

$TabDB.Model.roles.Add()产生

OverloadDefinitions
-------------------
void Add(Microsoft.AnalysisServices.Tabular.ModelRole metadataObject)
void ICollection[ModelRole].Add(Microsoft.AnalysisServices.Tabular.ModelRole item)

我在这里找到了一个脚本,但这是针对早期多维数据集模型(1103及以下)的,因此它不适用于表格模型

https://bhavikmerchant.wordpress.com/2010/09/06/adding-ssas-roles-via-powershell/

更新:按照MADMagician的回答,我能够看到此内容

pic

1 个答案:

答案 0 :(得分:1)

根据ModelRole类的documentation,构造函数不接受较早的Role类接受的任何参数。您必须创建一个空白的ModelRole,更新所需的任何属性,然后将其添加到ModelRoleCollection。

$AddRole = new-Object Microsoft.AnalysisServices.Tabular.ModelRole
$AddRole.Name = 'NewRole1'
$RoleMember = New-Object Microsoft.AnalysisServices.Tabular.ModelRoleMember
$RoleMember.MemberName = 'member1'
$AddRole.Members.Add($RoleMember)
$TabDB.Model.Roles.Add($AddRole)

我实际上没有任何要测试的内容,但是如果我正确理解了链接的文档,以上内容应该创建一个角色,然后创建一个成员,将该成员添加到该角色,然后将该角色添加到您的数据库中。

如上所述,没有ModelRoleMember的构造函数,相反,您必须使用确实具有构造函数的派生类:

$RoleMember = New-Object Microsoft.AnalysisServices.Tabular.ExternalModelRoleMember

$RoleMember = New-Object Microsoft.AnalysisServices.Tabular.WindowsModelRoleMember

关于添加权限,您需要参考文档。看来您必须制作Microsoft.AnalysisServices.Tabular.TablePermission对象,设置它们的属性,然后将它们添加到$AddRole的TablePermissions属性中。