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

How to add roles, members, and permissions?

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

$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 : Cannot find an overload for "ModelRole" and the argument count: "1". and

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

如果我尝试这样做:

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

我收到这个错误

Cannot find an overload for "Add" and the argument count: "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/

更新:根据 MA​​DMagician 的回答,我可以看到这个

根据 ModelRole class 的 documentation,构造函数不像旧角色 class 那样接受任何参数。您必须创建一个空白的 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 没有构造函数,您必须使用具有构造函数的派生 classes:

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

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

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

的 TablePermissions 属性