Обновите ссылку на источник данных SSRS в Powershell перед загрузкой - PullRequest
0 голосов
/ 11 мая 2018

Я надеюсь, что кто-то может помочь мне с этой проблемой, я пытаюсь загрузить отчет SSRS, используя powershell, однако он полностью теряет ссылку на источник данных после его загрузки.

Я нашел в Интернете какой-то скрипт, который меняет ссылку, но это не сработает для того, что мне нужно, потому что он использует имя источника данных, чтобы стать ссылкой, но в моем сценарии имя источника данных может быть чем-то вроде Datasource1, но ссылка может быть / Data Sources / Translations

Чтомне нужно сделать, это изменить ссылку в bytearray до его загрузки.

Это скрипт, который я использую до сих пор, который работает для загрузки.

#ReportName
$reportName = [System.IO.Path]::GetFileNameWithoutExtension($rdlFile);
write-host $reportName -ForegroundColor Green
#Upload File
try
{
#Get Report content in bytes
Write-Host "Getting file content of : $rdlFile"
$byteArray = gc $rdlFile.FullName -encoding Byte

$msg = "Total length: {0}" -f $byteArray.Length
Write-Host $msg

Write-Host "Uploading to: $reportFolder_Final"

$type = $ssrsProxy.GetType().Namespace
$datatype = ($type + '.Property')

$DescProp = New-Object($datatype)
$DescProp.Name = 'Description'
$DescProp.Value = ''
$HiddenProp = New-Object($datatype)
$HiddenProp.Name = 'Hidden'
$HiddenProp.Value = 'false'
$Properties = @($DescProp, $HiddenProp)

#Call Proxy to upload report

$warnings = $null

$Results = $ssrsProxy.CreateCatalogItem("Report",$reportName,$reportFolder_Final, $IsOverwriteReport,$byteArray,$Properties,[ref]$warnings)

Если я пытаюсь прочитатьXML-файл в виде строки, а затем преобразование его обратно в байтовый массив перед его загрузкой на сервер ssrs. Загрузка не удалась, так как он жалуется на форматирование.У меня были планы прочитать его как строку, изменить ссылку на источник данных, кодировать его, а затем загрузить, но это та часть, в которой мне нужна ваша помощь.

Приветствия

1 Ответ

0 голосов
/ 11 мая 2018

Мне удалось разобраться в этом, для тех, у кого были похожие проблемы, я использовал следующий код для чтения данных из файла XML как system.byte, преобразовал их в строку UTF8, внес изменения в ссылки изатем преобразовал его обратно в UTF8 Bytestream перед загрузкой на сервер отчетов WDSL

$byteArray = gc $rdlFile.FullName -encoding Byte
$byteArray = [System.Text.Encoding]::UTF8.GetString($byteArray)
$byteArray = $byteArray -replace "<DataSourceReference>", "<DataSourceReference>/Data Sources/"
$byteArray = $byteArray -replace "<SharedDataSetReference>", "<SharedDataSetReference>/Datasets/"
$byteArray = [System.Text.Encoding]::UTF8.GetBytes($byteArray)
...