Используя Powershell к полномочиям пользователя аппарата в Reporting Services

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

Как я использую Powershell для добавления конкретного пользователя домена, или группа к определенной роли создания отчетов в SSRS2008 (скажите что роль Контент-менеджера или Браузера)? Существует ли простой или два сценария строки для достижения его?

Спасибо!

(Я ранее отправил этот вопрос на, ТАКИМ ОБРАЗОМ, здесь).

4
задан 23 May 2017 в 15:41
1 ответ

Я столкнулся с этим вопросом, когда пытался найти то же самое.
В конце концов, я написал эту функцию, которая работает с 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;
4
ответ дан 3 December 2019 в 03:36

Теги

Похожие вопросы