我正在尝试将角色和成员添加到表格数据库(多维数据集)
$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的回答,我能够看到此内容
答案 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属性中。