2012-01-21 39 views
6

Tôi đang viết một tập lệnh PowerShell để triển khai một số báo cáo cho SQL Server Reporting Services 2008 R2 sử dụng dịch vụ web SSRS. Tôi khá hài lòng với cách tiếp cận này, thật dễ dàng để tạo một thư mục triển khai mới và tải lên các báo cáo. Sau đây là một đoạn mã hiển thị việc tạo thư mục:Dịch vụ báo cáo 2008 R2 dịch vụ web api - làm cách nào để quản lý quyền bảo mật?

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

Tuy nhiên tôi cũng muốn có thể đặt quyền trên thư mục và đây là nơi tôi bị kẹt một chút. Những gì tôi muốn sao chép là ở đâu, từ giao diện người dùng web, tôi sẽ chọn tùy chọn bảo mật của thư mục và thêm user \ group vào vai trò. Tôi nghĩ rằng điều này có thể được thực hiện thông qua propertyArray trên cuộc gọi createFolder nhưng tôi đã không thể tìm thấy bất kỳ thông tin nào trong tài liệu (đã thăm dò các thuộc tính hiện tại và không thể thấy bất kỳ điều gì có liên quan), tôi đã tìm kiếm tại số http://msdn.microsoft.com/en-us/library/cc282788.aspx để được hướng dẫn. Vì vậy, đạt đến một kết thúc chết ở đó. Tôi nghĩ rằng có thể có một phương pháp cụ thể để quản lý quyền ở cấp độ này nhưng không thể xác định được quyền.

Tôi đang sử dụng dịch vụ web ReportingService2005, tôi biết cũng có dịch vụ web 2010 nhưng tôi không thể tìm thấy những gì tôi đang tìm kiếm ở đó.

Có ai biết cách tôi thêm quyền vào thư mục bằng api dịch vụ web hay không (và có lẽ là phương pháp nhất quán cho các đối tượng khác như báo cáo và nguồn dữ liệu được chia sẻ)? Tôi cho rằng nó có thể là giao diện người dùng web cho phép bạn làm điều đó. Đây không phải là một câu hỏi về quyền năng nhưng thay vào đó là của api để sử dụng để quản lý các quyền.

Cập nhật - Dưới đây là đoạn mã dường như thực hiện công việc. Tôi cần tinh chỉnh điều này một chút vì có vẻ như bản cập nhật cho các chính sách phải bao gồm danh sách gốc nên tôi cần có các chính sách hiện tại, thêm chính sách mới của tôi vào danh sách này và cập nhật với danh sách đầy đủ. Nhưng tôi sẽ khắc phục điều đó sau!

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

Trả lời

2

Sử dụng phương pháp SetPolicies. Đầu tiên, hãy xác định mảng Policy(s) chứa nhóm/người dùng và vai trò bắt buộc, sau đó chuyển mảng này tới SetPolicies cùng với mục.

Các vấn đề liên quan