API веб-служб Reporting Services 2008 R2 - как управлять разрешениями безопасности?

Я пишу сценарий PowerShell для развертывания ряда отчетов в SQL Server Reporting Services 2008 R2 с использованием веб-служб SSRS. Я очень доволен подходом, было легко создать новую папку развертывания и загрузить отчеты. Ниже приведен фрагмент кода, показывающий создание папки:

$reportServerUri = "http://{0}/ReportServer/ReportService2005.asmx" -f $reportServerName   
$proxy = New-WebServiceProxy -Uri $reportServerUri -Namespace SSRS.ReportingService2005 -Credential $credential
#Dont currently set any properties so set empty array of properties
$propertyArray = @()   
$warnings = $proxy.CreateFolder($folderName, $folderParent, $propertyArray)

Однако я также хотел бы иметь возможность устанавливать разрешения для папки, и здесь я немного застрял. То, что я хочу воспроизвести, - это то, где в веб-интерфейсе я бы выбрал параметр безопасности папки и добавил пользователя \ группу для роли.

Я подумал, что это можно сделать с помощью propertyArray при вызове createFolder, но я еще не смог найти никакой информации в документации (исследовал существующие свойства и не нашел ничего подходящего), я смотрел http://msdn.microsoft.com/en-us/library/cc282788.aspx в качестве руководства. Так зашли в тупик. Я подумал, что может быть особый метод управления разрешениями на этом уровне, но не смог его определить.

Я использую веб-службы ReportingService2005, я знаю, что существуют также веб-службы 2010 года, но мне также не удалось найти там то, что я ищу.

Кто-нибудь знает, как я добавляю разрешения к папкам с помощью API веб-служб (и, предположительно, это согласованный метод для других объектов, таких как отчеты и общие источники данных)? Я предполагаю, что это должно быть возможно, поскольку веб-интерфейс позволяет вам это делать. Это не вопрос PowerShell, это вопрос API, который используется для управления разрешениями.

Обновление - Ниже приведен фрагмент кода, который, похоже, выполняет свою работу. Мне нужно немного уточнить это, поскольку похоже, что обновление политик должно включать исходный список, поэтому мне нужно получить текущие политики, добавить к нему мою новую политику и обновить полный список. Но я исправлю это позже!

$Policies = $global:ssrsproxy.GetPolicies($ItemPath, [ref] $InheritsFromParent)   
$PolicyAlreadyExists = $false

$Policies | Foreach-Object{ if ($_.GroupUserName -eq $GroupUserName)    
    {$PolicyAlreadyExists = $true} }
$Policies | Foreach-Object{ $_ | get-member }

    if ($PolicyAlreadyExists){
        "Policy already applied."
    } else {        
        $Policy = New-Object SSRS.ReportingService2005.Policy
        $Policy.GroupUserName = $GroupUserName       
        $Roles = @()   
        $Role = New-Object SSRS.ReportingService2005.Role
        $Role.Name = $RoleName
        $Roles += $Role
        $Policy.Roles = $Roles            

        $global:ssrsproxy.SetPolicies($ItemPath, $Policy)
        "Policy applied."
}           

6
задан Kiquenet 20 August 2015 в 06:39
поделиться