如何使用powershell更改RDL中的共享数据集路径

如何使用powershell更改RDL中的共享数据集路径,powershell,reporting-services,automation,Powershell,Reporting Services,Automation,抱歉,这是我的第一个问题 我试图做的是编辑RDL中共享数据集的位置。 也就是说,我正在使用powershell从本地硬盘将报表部署到报表服务器。不幸的是,其中一些报告使用共享数据集,并且RDL引用的位置与共享数据集的实际位置不同。但共享数据集名称是相同的 那么,当我上传这些报告时,是否有一种方法可以循环浏览它们并更改共享数据集引用,使其指向实际位置?例如,现在RDL将共享数据集引用为“Employee”,但我想使用powershell将其更改为/it/Sales/Datasets/Employe

抱歉,这是我的第一个问题

我试图做的是编辑RDL中共享数据集的位置。 也就是说,我正在使用powershell从本地硬盘将报表部署到报表服务器。不幸的是,其中一些报告使用共享数据集,并且RDL引用的位置与共享数据集的实际位置不同。但共享数据集名称是相同的

那么,当我上传这些报告时,是否有一种方法可以循环浏览它们并更改共享数据集引用,使其指向实际位置?例如,现在RDL将共享数据集引用为“Employee”,但我想使用powershell将其更改为/it/Sales/Datasets/Employee。非常感谢您。

您可以为此使用web服务,您可以使用创建。请注意
-Namespace
参数,因为您需要实例化其他对象,并且会遇到问题

其要点是:

$dataSources = $proxy.GetItemDataSources("/path/to/report")
$dsRef = New-Object -TypeName ($proxy.GetType().Namespace + ".DataSourceReference")
$dsRef.Reference = "/path/to/datasource"
$dataSources[0].Item = $dsRef
$proxy.SetItemDataSources("/path/to/report", $datasources)
您可能希望提供从数据源名称到服务器路径的映射,然后根据
$dataSources[0].Name查找引用。或者,您可以查询报表XML以查找正在使用的数据源,并构造一个新的
数据源
对象,而不是查询现有的对象

我假设SSRS 2008 R2或更高版本-如果这是针对2005年的,则需要对其进行调整以使用ReportingService2005 web服务