我有约50个计划被高速缓存的报告"定期的时间表(如下图所示)。
此信息仅在报表服务器数据库中可用,还是可以使用Powershell检索计划信息?所有"显而易见的"我到目前为止运行的方法(使用powershell ise)要么不返回任何信息,要么返回布尔值(所有' false')
答案 0 :(得分:1)
您可以使用GetItemHistoryOptions
来获取报告项目的计划。
然后,根据方法的Item
ScheduleDefinitionOrReference
参数的[ref]
属性类型,您可以决定如何显示信息。
Item
的类型可以是MinuteRecurrence
,DailyRecurrence
,WeeklyRecurrence
,MonthlyRecurrence
或MonthlyDOWRecurrence
中的一种。
示例强>
例如,要格式化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