0

我有一个 Powershell 脚本,比如说TestReports.ps1。在这个文件中,我有类似的参数

  1. 源报告文件夹名称
  2. 报告需要在 ReportServer 中发布的 TargetReportFolderName
  3. 报告名称
  4. 数据源名称
  5. 数据源文件夹名称
  6. 数据库名称
  7. 服务器名称

这些参数值由用户在用户提示下给出。

现在我想rs通过传递文件来调用该实用程序.rss(该文件具有用于在 vb 中将报告发布到报告服务器的脚本),并且上述参数值是从该.ps1文件传递的。

如何.rss使用此文件中传递的参数调用.ps1文件?

在批处理文件中,我给出如下:

rs -i Reports.rss -s %TargetURL% -v TargetFolder="%TargetFolder%" -v SourceReportFolder="%SourceReportFolder%" -v DataSourceFolder="%DataSourceFolder%"  -v DataSourceName="%DataSourceName%" -v ServerName="%ServerName%" -v DataBaseName="%DataBaseName%" -v ReportName="%ReportName%"

如何在.ps1文件中实现相同的功能?

4

2 回答 2

0

我不确定我是否清楚你的意思。查看TestReports.ps1的内容也将有所帮助。您只是在问如何将该批处理语法转换为 PowerShell 吗?这是您的批处理命令的 PowerShell 等效项:

rs -i .\Reports.rss -s $TargetURL -v "TargetFolder=`"$TargetFolder`"" -v "SourceReportFolder=`"$SourceReportFolder`" -v "DataSourceFolder=`"$DataSourceFolder`""  -v "DataSourceName=`"$DataSourceName`"" -v "ServerName=`"$ServerName`"" -v "DataBaseName=`"$DataBaseName`"" -v "ReportName=`"$ReportName`""

几点注意事项:

  • 这是假设rs要求-v的参数格式为ParameterName="Some Value",并将引号作为字符串值的一部分传递。如果它可以采用 形式,则可以将所有-v参数ParameterName=Some Value简化为等,因为 PowerShell 隐式双引号未引用的字符串参数。-v TargetFolder=$TargetFolder
  • 批处理和 PowerShell 之间的一个微妙但显着的区别:注意.\之前Reports.rss-- 默认情况下,PowerShell 在路径中没有当前工作目录。
于 2013-11-12T05:12:50.523 回答
-1

得到了解决方案,我们可以在批处理文件中使用与 Powershell 脚本中相同的代码,我们需要执行上述命令只需将“% 替换为 $ 并删除 %”

例子:

批处理文件中的脚本:

rs -i TestReports.rss -s %TargetURL% -v TargetFolder="%TargetFolder%" -v SourceReportFolder="%SourceReportFolder%" -v DataSourceFolder="%DataSourceFolder%" -v DataSourceName="%DataSourceName%" -v ServerName ="%ServerName%" -v DataBaseName="%DataBaseName%" -v ReportName="%ReportName%"

Powershell中的脚本:

rs -i TestReports.rss -s $TargetURL -v TargetFolder=$TargetFolder -v SourceReportFolder=$SourceReportFolder -v DataSourceFolder=$DataSourceFolder -v DataSourceName=$DataSourceName -v ServerName=$ServerName -v DataBaseName=$DataBaseName -v ReportName= $报告名称

于 2013-11-12T05:15:50.117 回答