SSRS缓存计划Re

时间:2017-12-04 16:40:55

标签: powershell caching reporting-services

我有约50个计划被高速缓存的报告"定期的时间表(如下图所示)。

SSRS Caching Options Image

此信息仅在报表服务器数据库中可用,还是可以使用Powershell检索计划信息?所有"显而易见的"我到目前为止运行的方法(使用powershell ise)要么不返回任何信息,要么返回布尔值(所有' false')

1 个答案:

答案 0 :(得分:1)

您可以使用GetItemHistoryOptions来获取报告项目的计划。

然后,根据方法的Item ScheduleDefinitionOrReference参数的[ref]属性类型,您可以决定如何显示信息。

Item的类型可以是MinuteRecurrenceDailyRecurrenceWeeklyRecurrenceMonthlyRecurrenceMonthlyDOWRecurrence中的一种。

示例

例如,要格式化MonthlyRecurrence,您可以使用以下代码:

$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) {
    $result = $svc.GetItemHistoryOptions($report.Path, 
        [ref]$KeepExecutionSnapshots, 
        [ref]$ScheduleDefinitionOrReference)
    if($ScheduleDefinitionOrReference.Item -is [RS.MonthlyRecurrence])
    {
        "'$($report.Name)' Schedule Information:"
        "StartDateTime: $($ScheduleDefinitionOrReference.StartDateTime)"
        "StartDateTime: $($ScheduleDefinitionOrReference.EndDate)"
        "EndDateSpecified: $($ScheduleDefinitionOrReference.EndDateSpecified)"
        "Days: $($ScheduleDefinitionOrReference.Item.Days)"
        $months = Get-Member `
            -InputObject $($ScheduleDefinitionOrReference.Item.MonthsOfYear) `
            -MemberType Property | Where-Object {
            $ScheduleDefinitionOrReference.Item.MonthsOfYear.$($_.Name) -eq $true
        }
        "Months:$($months.Name -join ",")" 
    }
}

结果将是这样的:

'MyReport' Schedule Information:
StartDateTime: 12/19/2017 18:00:00
StartDateTime: 01/01/0001 00:00:00
EndDateSpecified: False
Days: 1,3-5
Months:August,December,July,November,October,September