web-services - SSRS 如何使用 Powershell 获取报表缓存选项?

标签 web-services powershell reporting-services ssrs-2016

在 SSRS Web 界面中,单击报告并转至管理 --> 缓存后,如果报告配置为“始终针对预生成的快照运行此报告”,则会有一个缓存快照部分,其中包含选项“按计划创建缓存快照”

enter image description here

我一直在摆弄 PowerShell 并尝试创建一个脚本来查找设置此选项的所有报告,并输出计划。

我有这个脚本,它使用“快照”的“执行类型”迭代每个报告,但我相信我调用了错误的方法(GetCacheOptions),因为它对每个项目返回的所有内容都是 False:

Clear-Host 

$webServiceUrl = 'http://myReportServer.domain.com/reportserver/reportservice2010.asmx?WSDL'

$rs = New-WebServiceProxy -Class 'RS' -Namespace 'RS' -Uri $webServiceUrl -UseDefaultCredential

$reports = $rs.ListChildren("/Some Folder", $true) | Where-Object { $_.TypeName -eq "Report" }

$schedDef = New-Object RS.ScheduleDefinition
$expDef = New-Object RS.ExpirationDefinition

foreach ($report in $reports) {

    $execType = $rs.GetExecutionOptions($report.Path, [ref]$schedDef.Item)


    if($execType -eq "Snapshot") {
        $rs.GetCacheOptions($report.Path, [ref]$expDef.Item)
    }

}

有谁知道需要调用什么方法来获取此信息以及如何调用此方法(即需要提供哪些参数)?

编辑:

根据已接受答案的指导,我能够进行一些编辑(如下),但我没有得到我想要的时间表信息:

.......
....
foreach ($report in $reports) {

    $execResult = $rs.GetExecutionOptions($report.Path,
        [ref]$ScheduleDefinitionOrReference)

    if ($execResult -eq "Snapshot") {
        if($ScheduleDefinitionOrReference.Item -is [RS.DailyRecurrence]) {
            Write-Host "$($report.Name):" -f Green
            Write-Host "`tSchedule Information:" -f Yellow
            Write-Host "`t`tEvery $($ScheduleDefinitionOrReference.Item.Daysinterval) Day(s)"
            Write-Host "`t`tStart Time: $($ScheduleDefinitionOrReference.StartDateTime)`n"
        }

    }

最佳答案

您可以使用ReportingService2010.GetItemHistoryOptions并将 ItemPathout bool KeepExecutionSnapshotsout ScheduleDefinitionOrReference 传递给该方法。

如果您选中按计划创建缓存快照

ScheduleDefinitionOrReference 将包含 ScheduleDefinition,否则其值为 NoSchedule.

示例

$svcUrl = 'http://the-host-name/ReportServer/reportservice2010.asmx'
$svc = New-WebServiceProxy -Class 'RS' -Namespace 'RS' -Uri $svcUrl -UseDefaultCredential
$reports = $svc.ListChildren("/", $true) | Where-Object { $_.TypeName -eq "Report" }

$KeepExecutionSnapshots = $false
$ScheduleDefinitionOrReference = New-Object RS.ScheduleDefinitionOrReference

foreach ($report in $reports) {
    $svc.GetItemHistoryOptions($report.Path, 
        [ref]$KeepExecutionSnapshots, 
        [ref]$ScheduleDefinitionOrReference)
    $report.Path
    $ScheduleDefinitionOrReference
}

关于web-services - SSRS 如何使用 Powershell 获取报表缓存选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47521174/

相关文章:

java - JAX-RS 2.0 API 支持调用其客户端

powershell - foreach 循环运行两次?

arrays - 在 Powershell 中输出数组的哈希表

reporting-services - SSRS 2008R2 : Visual Studio 2008 and “2008” and “2010” schemas

xml - Web API 返回 JSON 内容类型而不是 XML

visual-studio-2008 - 将 .rptproj 从 VS2005 转换为 VS2008

java - 通过 RESTful Web 服务编辑对象

c# - Web 服务文件流到字节 [] 到 FileStream 到 pdf 失败 C#

Android:调用Web服务时操作超时

c++ - 无法在Visual Studio中的Bash中运行文件