繁体   English   中英

将参数从批处理脚本传递到PowerShell脚本失败

[英]Passing argument from batch script to PowerShell script fails

我正在尝试通过在批处理文件中传递REPLACE命令来找到解决方案,因为当使用REPLACE选项执行文件时,“ ReplaceTagsOnConfigFiles.ps1”将起作用,否则,它将要求输入[REPLACE | 回滚]

下面是批处理文件:

echo "Changing the execution policy"
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command {Set-ExecutionPolicy} > C:\Temp\a.out

echo "Updating the Server details:"

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1;REPLACE" > C:\Temp\b.out

执行上述批处理文件后,将弹出如下所示的消息。

可用命令:
*替换所有字符串以从每个.config和.x aml文件获取新配置。
*删除当前配置并检索旧配置(必须在之前执行替换)。

ReplaceTagsOnConfigFiles.ps1 [REPLACE | 回滚]

替换替换每个.config和.xaml文件中的所有字符串以构建新配置。
ROLLBACK从备份中检索旧配置。 注意:仅当您之前使用过“替换”时,此选项才有用。


没有替换文件

在这方面请帮助我。

更改此命令:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1;REPLACE" > C:\Temp\b.out

到这个:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File "D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1" REPLACE > C:\Temp\b.out

是否应该第一个命令更改执行策略? 如果是这样,则需要指定实际策略。 没有任何参数的Set-ExecutionPolicy将不起作用。 此外,将-ExecutionPolicy Bypass添加到第二个命令会更简单:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1" REPLACE > C:\Temp\b.out

您得到的错误不是直接来自PowerShell。 其中大部分(除最后一行外的所有内容)来自ReplaceTagsOnConfigFiles.ps1 问题在于该脚本期望将REPLACEROLLBACK作为参数(如错误消息所示),但是您没有向其传递任何参数。 分号是命令分隔符(例如在cmd中使用&符),因此您要告诉PowerShell首先不带任何参数D:\\test\\Bluebird_1.2.0_RTM\\ReplaceTagsOnConfigFiles.ps1执行D:\\test\\Bluebird_1.2.0_RTM\\ReplaceTagsOnConfigFiles.ps1 然后,您再次执行REPLACE命令,它本身没有参数。 这就是给您“没有替换文件”错误的原因。

您需要做的就是用空格替换分号,使REPLACE成为ReplaceTagsOnConfigFiles.ps1的参数,而不是新命令。


顺便说一句,说&符,在PowerShell中,它们用于执行非本机命令(包括.ps1脚本文件)。 您在这里使用它的方式有效,因为路径中没有空格,但是如果您需要引用路径,则会遇到问题(Powershell会将其作为字符串回显而不是执行它)。 您应该养成这样做的习惯:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "& 'D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1' REPLACE" > C:\Temp\b.out

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM