Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 为报表SSR设置缓存刷新计划_Powershell_Reporting Services_Ssrs 2012 - Fatal编程技术网

Powershell 为报表SSR设置缓存刷新计划

Powershell 为报表SSR设置缓存刷新计划,powershell,reporting-services,ssrs-2012,Powershell,Reporting Services,Ssrs 2012,我的reportserver上有一大堆报告。它们中的大多数都有使用共享计划的缓存刷新计划。是否可以通过编程方式在报表上设置缓存刷新计划? 启用缓存,使用共享计划设置缓存的过期时间,根据共享计划运行快照。使用SetExecutionOptions方法和SetCacheOptions方法,所有工作都可以正常运行 但是,为报表设置缓存刷新计划不会正常运行。建议 编辑:我想对所有数据集执行相同的操作,数据集将它们设置为按共享计划刷新 下面是我正在使用的代码(Powershell V3) 真的找到了。不知

我的reportserver上有一大堆报告。它们中的大多数都有使用共享计划的缓存刷新计划。是否可以通过编程方式在报表上设置缓存刷新计划? 启用缓存,使用共享计划设置缓存的过期时间,根据共享计划运行快照。使用SetExecutionOptions方法和SetCacheOptions方法,所有工作都可以正常运行

但是,为报表设置缓存刷新计划不会正常运行。建议

编辑:我想对所有数据集执行相同的操作,数据集将它们设置为按共享计划刷新

下面是我正在使用的代码(Powershell V3)


真的找到了。不知怎的,我和几位同事忽略了这一点: CreateCacheRefreshPlan方法是解决方案

它看起来不好看(但是,嘿,我不是一个开发人员),其中一半是无耻的山寨,但它确实做到了……)

Thnx和kudo的所有人谁张贴的花絮我需要

$reportServerURI = "http://localhost/Reportserver"
$ReportPathWildCard = "/";
$NameSharedSchedule="NAME OF SCHEDULE";

# init WS proxy
$reportServerURI2010 = "$reportServerURI/ReportService2010.asmx?WSDL"
$RS = New-WebServiceProxy -Uri $reportServerURI2010 -UseDefaultCredential
$proxyNamespace = $RS.GetType().Namespace
# Get Schedule Reference
$NeverExpireSchedule= $RS.ListSchedules([System.Management.Automation.Language.NullString]::Value) | where {$_.Name -eq "$NameSharedSchedule"}
$NeverExpireScheduleID = $NeverExpireSchedule.scheduleid;
$NeverExpireDescription = $NeverExpireSchedule.Description;
$NeverExpireDefinition = $NeverExpireSchedule.Definition;
#Write-Host "Found Shared Schedule: '$NameSharedSchedule' with id $NeverExpireScheduleID and definition $NeverExpireDescription";

$NeverExpireScheduleRef =New-Object("$proxyNamespace.ScheduleReference");
$NeverExpireScheduleRef.ScheduleID=$NeverExpireScheduleID;



# Wat dingen voorbereiden
#delivery Extension
   #$setting = "Report Server Email"
   $matchdata = $NeverExpireScheduleID
   $description = "Automatisch ingesteld op " + $NameSharedSchedule
   $eventtype = "RefreshCache"
   $parameters

#get all needed items
$items = $RS.ListChildren($ReportPathWildCard, $true)  | Where-Object {"Dataset" -contains $_.TypeName} 
#process all items
foreach ($item in $items) {
    $xpath = $item.path
    $xtype = $item.TypeName
    Write-Host "Processing $xtype $xpath"

    $report = $xpath


    ##SET Cache
    $r= $RS.SetCacheOptions( $xpath,[System.Management.Automation.Language.NullString]::Value, $o) 

  $r= $RS.CreateCacheRefreshPlan(   $report,
                                    $description,
                                    $eventtype,
                                    $matchdata,
                                    $parameters
                                    )

}

真的找到了。不知怎的,我和几位同事忽略了这一点: CreateCacheRefreshPlan方法是解决方案

它看起来不好看(但是,嘿,我不是一个开发人员),其中一半是无耻的山寨,但它确实做到了……)

Thnx和kudo的所有人谁张贴的花絮我需要

$reportServerURI = "http://localhost/Reportserver"
$ReportPathWildCard = "/";
$NameSharedSchedule="NAME OF SCHEDULE";

# init WS proxy
$reportServerURI2010 = "$reportServerURI/ReportService2010.asmx?WSDL"
$RS = New-WebServiceProxy -Uri $reportServerURI2010 -UseDefaultCredential
$proxyNamespace = $RS.GetType().Namespace
# Get Schedule Reference
$NeverExpireSchedule= $RS.ListSchedules([System.Management.Automation.Language.NullString]::Value) | where {$_.Name -eq "$NameSharedSchedule"}
$NeverExpireScheduleID = $NeverExpireSchedule.scheduleid;
$NeverExpireDescription = $NeverExpireSchedule.Description;
$NeverExpireDefinition = $NeverExpireSchedule.Definition;
#Write-Host "Found Shared Schedule: '$NameSharedSchedule' with id $NeverExpireScheduleID and definition $NeverExpireDescription";

$NeverExpireScheduleRef =New-Object("$proxyNamespace.ScheduleReference");
$NeverExpireScheduleRef.ScheduleID=$NeverExpireScheduleID;



# Wat dingen voorbereiden
#delivery Extension
   #$setting = "Report Server Email"
   $matchdata = $NeverExpireScheduleID
   $description = "Automatisch ingesteld op " + $NameSharedSchedule
   $eventtype = "RefreshCache"
   $parameters

#get all needed items
$items = $RS.ListChildren($ReportPathWildCard, $true)  | Where-Object {"Dataset" -contains $_.TypeName} 
#process all items
foreach ($item in $items) {
    $xpath = $item.path
    $xtype = $item.TypeName
    Write-Host "Processing $xtype $xpath"

    $report = $xpath


    ##SET Cache
    $r= $RS.SetCacheOptions( $xpath,[System.Management.Automation.Language.NullString]::Value, $o) 

  $r= $RS.CreateCacheRefreshPlan(   $report,
                                    $description,
                                    $eventtype,
                                    $matchdata,
                                    $parameters
                                    )

}
我一直在看。看起来解决方案就在那里,但有人能帮我把它翻译成powershell吗?我一直在看。看起来解决方案已经存在,但有人能帮我将其翻译成powershell吗?