0

У меня есть сценарий PowerShell, и я хотел бы обновить описания нескольких моих подписей отчета SSRS, которые соответствуют некоторым критериям. Я знаю ниже метод.Изменить описание подписки отчета SSRS через PowerShell

$proxy.ChangeSubscriptionOwner() 

У нас также есть механизмы для обновления описаний? Пожалуйста, предложите.

ответ

0

Я пробовал читать параметры подписки, а затем попытался обновить его новым описанием. Вот код.

$Proxy.GetSubscriptionProperties($_.SubscriptionID, [ref]$ExtensionSettings, [ref]$Description, [ref]$Active, [ref]$Status, [ref]$EventType, [ref]$MatchData, [ref]$Parameters)         

$Proxy.SetSubscriptionProperties($_.SubscriptionID, $ExtensionSettings, $New_Description, $EventType, $MatchData, $Parameters) 

Но он бросает под ошибкой:

Исключение вызывающего "SetSubscriptionProperties" с "6" аргумент (ы): «System.Web.Services.Protocols.SoapException:. Ошибка доставки произошло - -> Microsoft.ReportingServices.Diagnostics.Utilities.DeliveryErrorException: произошла ошибка доставки. ---> Microsoft.ReportingServices.Diagnostics.Utilities.InvalidExtensionParameter: Один из параметров расширения недопустим по следующей причине: Необходимая настройка «PASSWORD» не найден. в Microsoft.ReportingServices.Library.ReportingServi ce2005Impl.SetSubscriptionProperties (String SubscriptionId, ExtensionSettings ExtensionSettings, булева isDataDriven, DataRetrievalPlan DataRetrievalPlan, Строка Описание, Строка типСобытия, Строка MatchData, ParameterValueOrFieldReference [] Параметры, Guid batchId) на Microsoft.ReportingServices.Library.ReportingService2005Impl.SetSubscriptionProperties (String SubscriptionId, ExtensionSettings ExtensionSettings, булева isDataDriven, DataRetrievalPlan DataRetrievalPlan, Строка Описание, Строка типСобытия, Строка MatchData, ParameterValueOrFieldReference [] Параметры) на Microsoft.ReportingServices.WebServer.ReportingService2010.SetSubscriptionProperties (String SubscriptionId, ExtensionSettings ExtensionSettings, Строка Описание, Строка типСобытия, String MatchData , ParameterValue [] Параметры) " В C: \ Users \ XXXX \ UpdateSubscriptions.ps1: 41 char: 21 + $ Proxy.SetSubscriptionProperties ($ _. SubscriptionID, $ Extensi ... + ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: SoapException

0

Я знаю, что это еще не добраться до ответа, может быть, вы частично ее получите.

Вот как вы можете получить все отчеты с подписками.

function Get-DataDrivenSubscriptionProperties 
{ 
    param([string] $Subscriptionid, 
    [object]$ssrsproxy) 
    $ddextensionSettings = $ddDataRetrievalPlan = $ddDescription = $ddactive = $ddstatus = $ddeventtype = $ddmatchdata = $ddparameters = $Null 
    $ddOwner = $ssrsproxy.GetDataDrivenSubscriptionProperties($subscriptionid,[ref]$ddextensionSettings,[ref]$ddDataRetrievalPlan,[ref]$ddDescription,[ref]$ddactive,[ref]$ddstatus,[ref]$ddeventtype,[ref]$ddmatchdata,[ref]$ddparameters) 
    [PSCustomObject]@{ 
     'Owner' = $ddOwner 
     'extensionSettings' = $ddextensionSettings 
     'DataRetrievalPlan' = $ddDataRetrievalPlan 
     'Description' = $ddDescription 
     'active' = $ddactive 
     'status' =$ddstatus 
     'eventtype' =$ddeventtype 
     'matchdata' = $ddmatchdata 
     'parameters' = $ddparameters 
     } 
} 
function Get-SubscriptionProperties 
{ 
    param([string]$Subscriptionid, 
    [object]$ssrsproxy) 
    $subextensionSettings = $subDataRetrievalPlan = $subDescription = $subactive = $substatus = $subeventtype = $submatchdata = $subparameters = $Null 

    $subOwner = $ssrsproxy.GetSubscriptionProperties($subscriptionid,[ref]$subextensionSettings,[ref]$subDescription,[ref]$subactive,[ref]$substatus,[ref]$subeventtype,[ref]$submatchdata,[ref]$subparameters) 
     [PSCustomObject]@{ 
     'Owner' = $subOwner 
     'extensionSettings' = $subextensionSettings 
     'Description' = $subDescription 
     'active' = $subactive 
     'status' =$substatus 
     'eventtype' =$subeventtype 
     'matchdata' = $submatchdata 
     'parameters' = $subparameters 
     } 

} 
function Get-Subscriptions 
{ 
    #Returns a nested object with each 
    param([object]$ssrsproxy, [string]$site) 
    #write-verbose 'Path to where the reports are must be specified to get the subscriptions you want.. Root (/) does not seem to get everything' 
    $items = $ssrsproxy.ListChildren($site,$true) | Where-Object{$_.typename -eq 'report'} 
    $subscriptions = @() 
    foreach($item in $items) 
    { 
    $subs = $ssrsproxy.ListSubscriptions($item.path) 
    $count = $subs.count 
    write-verbose "found $($subs.count) subscriptions for $($item.Name)" 
    $subprops = @() 
    if($subs) 
    { 
     $s = @() 
     foreach($sub in $subs) 
     { 

     if($sub.isdatadriven -eq 'true') 
     { 
      $subprops += Get-DataDrivenSubscriptionProperties -subscriptionid $sub.SubscriptionID -ssrsproxy $ssrsproxy 
      $sub | add-member -MemberType NoteProperty -Name Properties -value $subprops -TypeName [PSCustomObject] 
     } 
     else 
     { 
      $subprops += Get-SubscriptionProperties -subscriptionid $sub.SubscriptionID -ssrsproxy $ssrsproxy 
      $sub | add-member -MemberType NoteProperty -Name Properties -value $subprops -TypeName [PSCustomObject] 
     } 

     } 

     $item | add-member -MemberType NoteProperty -Name Subscriptions -Value $subs -TypeName [PSCustomObject] 
     $item | Add-Member -MemberType NoteProperty -Name 'SubscriptionCount' -Value $count 
    } 
    else 
    { 
     $count = 0 
    } 
    if($count -ne 0) 
    { 
     $subscriptions += $item 
    } 
    } 
    $subscriptions 
} 
function New-SubscriptionFile 
{ 
    [CmdletBinding()] 
    [Alias()] 
    param([psobject]$subscriptionObject, [string]$path) 
    if(test-path $path -PathType Leaf) 
    {$path = split-path $path} 
    foreach($sub in $subscriptionObject) 
    { 
     $reportName = (($sub.name).split('.'))[0] 
     $filename = "$path\$reportName.xml" 
     $sub | Export-Clixml -Path $filename -Depth 100 
    } 
} 
+0

Вот как я назвал его и построил export'd XML в \t $ ssrsproxy = New-WebServiceProxy -uri 'HTTP: //sharepointsite/sites/_vti_bin/ReportServer/ReportService2010.asmx' -namespace «SSRSProxy '-class' ReportService2010 '-UseDefaultCredential \t $ Reports = get-subscriptions -ssrsproxy $ ssrsproxy -site' http: // sharepointsite/sites/' \t New-SubscriptionFile -subscriptionObject $ reports -path C: \ temp \ reports –

Смежные вопросы