Как правильно настроить источник данных в PowerShell для отчетов SSRS - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть сценарий PowerShell, который должен установить правильный источник данных для отчета.
У меня есть больше источников данных, например DS1 и DS2.

Вот часть моего кода PowerShell:

function UpgradeReport
{
    param
    (
        [string]$t,
        [string]$ReportFolder,
        [string]$ReportName,
        [string]$DataSourceFolder,
        [string]$IssueId
    )

if([string]::IsNullOrEmpty($DataSourceFolder)) { $DataSourceFolder="DS1" }

.......
# if all ok since now, report is uploaded
        # set datasource if new report
        if (!$reports.$reportName) {
            Write-Host $reportName ' is new. Setting data source: ' $DataSourceFolder
            $Proxy.SetItemDataSources("/$reportFolder/$reportName", $datasources.$DataSourceFolder)
        }
        Write-Output "$(Timestamp) Finished InstallReports for $ReportName"

.....

# get list of all datasources
$Proxy.ListChildren('/Data Sources', $false) | ForEach-Object { $datasources.add($_.Name,$_ ) }

Проблема, вероятно, в SetItemDataSources, где у меня есть $datasources.$DataSourceFolder

Если кто-то знает, как я могу это исправить, я буду счастлив.

1 Ответ

0 голосов
/ 05 декабря 2018

Я использую в основном SSRS 2008, но я уверен, что ваша проблема в том, что перегрузка для SetItemDataSources ищет объект DataSource .Не просто путь к объекту.

$newDataSource = New-Object "$ssrsServiceNamespace.DataSource"
$newDataSource.Name = $DataSourceName
$newDataSource.Item = New-Object ("$ssrsServiceNamespace.DataSourceReference")
$newDataSource.Item.Reference = $DataSourcePath
Write-Verbose "New Datasource Name     : $($newDataSource.Name)"
Write-Verbose "New Datasource Reference: $($newDataSource.Reference)"

$ReportService.SetItemDataSources($reportPath, $newDataSource)

Замечания по поводу приведенного выше кода:

$ssrsServiceNamespace.DataSource происходит от объекта подключения.Он создает экземпляр объекта DataSource.Для меня создание универсального привело к ошибкам преобразования типов, приводящим к сбою SetItemDataSources().$ReportService.Gettype().Namespace.Так что для меня это работает до Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1tServer_ReportService2005_asmx, и мой взгляд выглядит лучше и теоретически помогает моему коду быть более переносимым между средами SSRS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...