使用PowerShell配置SSRS用户权限的两个基础问题
SSRS报表权限自动化脚本相关问题解答
1. 运行该脚本是否需要安装SSRS相关PowerShell模块?
不需要。该脚本通过PowerShell原生的New-WebServiceProxy cmdlet直接调用SSRS的Web服务端点(ReportService2006.asmx)实现权限配置,不依赖任何额外的SSRS专属PowerShell模块。只要执行脚本的机器能访问目标SSRS服务器的Web服务,且执行账号具备修改报表/文件夹权限的权限,即可正常运行。
2. 示例代码是为文件夹分配权限,若要直接为报表对象分配权限需做哪些修改?
脚本核心调用的GetPolicies和SetPolicies方法同时支持文件夹和报表对象的路径,只需做以下简单调整:
(可选)优化参数语义
将函数的$folder参数名改为更通用的$itemPath,让参数含义更清晰,修改后的函数定义开头如下:
function Add-SSRSUserRole ( [string]$reportServerUrl,[string]$userGroup,[string]$requiredRole,[string]$itemPath,[bool]$inheritFromParent )
同时将函数内部所有引用$folder的地方替换为$itemPath(比如$ssrs.GetPolicies($itemPath, [ref]$inheritFromParent)和$ssrs.SetPolicies($itemPath, $policies))。
指定报表的完整路径
调用函数时,将原有的文件夹路径替换为目标报表在SSRS服务器上的完整虚拟路径即可。例如:
[string]$url = "http://localhost/ReportServer/ReportService2006.asmx?wsdl"; # 为具体报表分配权限 Add-SSRSUserRole $url "Everyone" "Browser" "/MyReportFolder/MonthlySalesReport" $true; Add-SSRSUserRole $url "Domain\JohnDoe" "Browser" "/MyReportFolder/MonthlySalesReport" $true;
这样修改后,脚本就会直接对指定的报表对象进行权限配置,而非文件夹。
内容的提问来源于stack exchange,提问作者HandsomePig
相关产品推荐
相关产品推荐

