如何将rs Utility的参数传递给Powershell脚本

时间:2013-11-12 04:24:06

标签: powershell batch-file parameter-passing

我有一个Powershell脚本,比如TestReports.ps1。在这个文件中我有像

这样的参数
  1. SourceReportFolderName
  2. 需要在ReportServer中发布报告的TargetReportFolderName
  3. REPORTNAME
  4. 的datasourcename
  5. DataSourceFolderName
  6. 数据库名
  7. 服务器名称
  8. 这些参数值由用户以用户提示符给出。

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

    如何使用此.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%" 文件中实现相同的功能?

2 个答案:

答案 0 :(得分: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"形式,引号作为字符串值的一部分传递。如果它可以采用ParameterName=Some Value形式,则可以简化-v TargetFolder=$TargetFolder等所有 -v 参数,因为PowerShell会隐式地引用不带引号的字符串参数。
  • 批处理与PowerShell之间存在细微但重要的区别:请注意.\之前的Reports.rss - 默认情况下,PowerShell在路径中没有当前的工作目录。

答案 1 :(得分:-1)

得到解决方案,我们可以在批处理文件中使用与Powershell脚本中相同的代码,我们需要做的上述命令只是替换“%with $ and remove%”

示例:

批处理文件中的脚本:

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 = $ ReportName