Как добавить роли, участников и разрешения? - PullRequest
0 голосов
/ 09 мая 2019

я пытаюсь добавить роли и участников в табличную базу данных (куб)

$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)

iнашел скрипт здесь, но это для ранних моделей кубов (1103 и ниже), поэтому он не работает на табличных моделях

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

ОБНОВЛЕНИЕ: после ответа MADMagician я могу видетьэто

pic

1 Ответ

1 голос
/ 09 мая 2019

Согласно документации для класса ModelRole, конструктор не принимает никаких аргументов, как это делал более старый класс 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 объекты, установить их свойства, а затем добавить их в свойство TablePermissions $AddRole.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...