Назад | Перейти на главную страницу

Использование Powershell для установки разрешений пользователей в службах Reporting Services

Приносим извинения, если это кажется вопросом gimme-teh-codez, но я задаю его, потому что я новичок, когда дело доходит до Powershell.

Как использовать Powershell для добавления определенного пользователя или группы домена к определенной роли отчетности в SSRS2008 (например, к роли Content Manager или Browser)? Есть ли простой сценарий из одной или двух строк для этого?

Спасибо!

(Я ранее публиковал этот вопрос на SO Вот).

Я столкнулся с этим вопросом, пытаясь найти то же самое.
В конце концов, я написал эту функцию, которая работает с SSRS 2008 (как было изначально запрошено), вплоть до текущей версии SSRS (2016).

Хотя это не двухстрочный ответ, он определяет функцию, которая после создания предоставляет однострочный метод ... так что, на мой взгляд, это имеет значение (тем более, что вы не можете сделать это с помощью всего двух строк).

Надеюсь, кто-то сочтет это полезным!

function Add-SSRSUserRole
(   
    [string]$reportServerUrl,[string]$userGroup,[string]$requiredRole,[string]$folder,[bool]$inheritFromParent
)
{
    #Ensure we stop on errors
    $ErrorActionPreference = "Stop";
    #Connect to the SSRS webservice 
    $ssrs = New-WebServiceProxy -Uri "$reportServerUrl" -UseDefaultCredential;
    $namespace = $ssrs.GetType().Namespace;
    $changesMade = $false;

    #Look for a matching policy     
    $policies = $ssrs.GetPolicies($folder, [ref]$inheritFromParent);
    if ($policies.GroupUserName -contains $userGroup)
    {
        Write-Host "User/Group already exists. Using existing policy.";
        $policy = $policies | where {$_.GroupUserName -eq $userGroup} | Select -First 1 ;
    }
    else
    {
        #A policy for the User/Group needs to be created
        Write-Host "User/Group was not found. Creating new policy.";
        $policy = New-Object -TypeName ($namespace + '.Policy');
        $policy.GroupUserName = $userGroup;
        $policy.Roles = @();
        $policies += $policy;
        $changesMade = $true;
    }

    #Now we have the policy, look for a matching role
    $roles = $policy.Roles;
    if (($roles.Name -contains $requiredRole) -eq $false)
    {
        #A role for the policy needs to added
        Write-Host "Policy doesn't contain specified role. Adding.";
        $role = New-Object -TypeName ($namespace + '.Role');
        $role.Name = $requiredRole;
        $policy.Roles += $role;
        $changesMade = $true;
    }
    else 
    {
        Write-Host "Policy already contains specified role. No changes required.";
    }

    #If changes were made...
    if ($changesMade)
    {
        #...save them to SSRS
        Write-Host "Saving changes to SSRS.";
        $ssrs.SetPolicies($folder, $policies);
    }
    Write-Host "Complete.";
}

[string]$url = "http://localhost/ReportServer/ReportService2006.asmx?wsdl";
Add-SSRSUserRole $url "Everyone" "Browser" "/MyReportFolder" $true;
Add-SSRSUserRole $url "Domain\User" "Browser" "/MyReportFolder" $true;