2012-01-21 13 views
6

Sto scrivendo uno script PowerShell per distribuire un numero di report a SQL Server Reporting Services 2008 R2 utilizzando i servizi Web SSRS. Sono abbastanza soddisfatto dell'approccio, è stato facile creare una nuova cartella di distribuzione e caricare i report. Di seguito è riportato un frammento di codice che mostra la creazione di una cartella:Servizi di report 2008 R2 web services api - come gestisco le autorizzazioni di sicurezza?

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

Comunque mi piacerebbe anche essere in grado di impostare le autorizzazioni per la cartella e questo è dove io sono un po 'bloccato. Quello che voglio replicare è dove, dall'interfaccia utente web, selezionerei l'opzione di sicurezza della cartella e aggiungere un utente \ gruppo contro un ruolo.

Ho pensato che questo potrebbe essere fatto tramite propertyArray sulla chiamata createFolder ma non sono ancora riuscito a trovare alcuna informazione nei documenti (verificate le proprietà esistenti e non vedo nulla di rilevante), ho cercato a http://msdn.microsoft.com/en-us/library/cc282788.aspx per la guida. Quindi ho raggiunto un punto morto lì. Ho pensato che potesse esistere un metodo specifico per gestire i permessi a questo livello ma non sono stato in grado di identificarne uno.

Sto utilizzando i servizi Web ReportingService 2005, so che esistono anche servizi Web 2010 ma non sono riuscito a trovare nemmeno quello che sto cercando.

Qualcuno sa come aggiungo le autorizzazioni alle cartelle utilizzando l'API dei servizi Web (e presumibilmente un metodo coerente per altri oggetti come report e origini dati condivise)? Presumo che deve essere possibile in quanto l'interfaccia utente web ti permette di farlo. Questa non è una domanda di PowerShell ma piuttosto delle API da usare per gestire i permessi.

Aggiornamento - Di seguito è riportato lo snippet di codice che sembra svolgere il lavoro. Devo perfezionare questo aspetto perché sembra che l'aggiornamento delle policy includa l'elenco originale, quindi ho bisogno di ottenere le politiche attuali, aggiungere il mio nuovo criterio a questo e aggiornarlo con l'elenco completo. Ma lo aggiusterò più tardi!

$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." 
}   

risposta

2

Utilizzare il metodo SetPolicies. Definire innanzitutto un array di Policy(s) contenente gruppi/utente e ruoli richiesti, quindi passare questo array a SetPolicies insieme all'elemento.

Problemi correlati