如何通过ReportService2010.GetPolicies检查SSRS文件夹安全继承状态
ReportService2010 安全继承状态检查与权限配置说明
你在网上看到的示例提前给$inheritParent赋值的操作是没有实际作用的:这个参数是输出型参数,方法执行时会直接覆盖你传入的初始值,所以不管你提前把它设为$true还是$false,调用后得到的返回结果完全一致是正常现象。
安全继承状态的正确检查方式
不需要额外找其他方法,直接通过GetPolicies方法就能拿到继承状态,调用规则如下:
- 调用方法时传入ref类型的
$inheritParent变量,不需要在意它的初始值 - 方法执行完成后,直接读取
$inheritParent的值即可判断状态:- 值为
$true:当前文件夹继承父级安全策略,无独立自定义权限配置 - 值为
$false:当前文件夹已断开父级权限继承,使用独立的自定义安全配置
- 值为
正确的调用示例代码:
# 初始值可任意赋值,不影响最终输出结果 $inheritParent = $null # $rs 为你已经实例化好的ReportService2010服务对象 $existingPolicies = $rs.GetPolicies($targetFolderPath, [ref]$inheritParent) # 直接判断输出参数的值即可得到继承状态 if ($inheritParent) { Write-Host "路径 $targetFolderPath 为父级权限继承模式" } else { Write-Host "路径 $targetFolderPath 为自定义权限模式" }
新增权限时避免破坏原有配置的注意事项
- 你之前排查的
GetProperties方法仅返回文件夹的基础元数据(创建时间、描述、显示配置等),GetPermissions方法仅返回当前执行账号对文件夹拥有的权限条目,这两个方法都不包含权限继承状态字段,不用再从这两个方法的返回值里找相关信息。 - 如果检测到目标文件夹是继承父级权限的状态:直接对该文件夹调用
SetPolicies会自动断开继承,将你传入的权限列表设为文件夹的独立权限,覆盖原有的继承配置。如果需要保留继承关系,你需要到对应的父级节点上添加权限,而不是直接修改当前文件夹。 - 如果检测到目标文件夹是自定义权限状态:先把
GetPolicies返回的$existingPolicies数组完整保存,将新增的用户权限条目追加到这个数组中,再把完整的数组传入SetPolicies方法,就可以在保留原有自定义权限的基础上新增配置,不会覆盖已有设置。
内容的提问来源于stack exchange,提问作者gluetornado
相关产品推荐
相关产品推荐

