如何添加角色、成员和权限?
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/
更新:根据 MADMagician 的回答,我可以看到这个
根据 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 属性
我正在尝试将角色和成员添加到表格数据库(多维数据集)
$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/
更新:根据 MADMagician 的回答,我可以看到这个
根据 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
.