我试图通过将REPLACE命令传递给批处理文件来找到解决方案,因为当使用REPLACE选项执行文件时“ReplaceTagsOnConfigFiles.ps1”将起作用,否则它将要求[REPLACE | ROLLBACK]
以下是批处理文件:
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 | ROLLBACK]
REPLACE替换每个.config和.xaml文件中的所有字符串以构建新配置 ROLLBACK从备份中检索旧配置。注意:如果您之前使用过'替换',此选项很有用
没有替换文件
请在这方面帮助我。
答案 0 :(得分:1)
更改此命令:
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
答案 1 :(得分:0)
您获得的错误不是直接来自PowerShell。其中大部分(除了最后一行)都来自 ReplaceTagsOnConfigFiles.ps1 。问题是这个脚本需要 REPLACE 或 ROLLBACK 作为参数(如错误消息所示),但是你没有传递任何参数。分号是一个命令分隔符(就像在cmd中使用&符号一样),所以你要告诉PowerShell首先执行D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1
本身没有参数。然后你再次执行REPLACE
命令,没有参数。这就是为什么会给你“没有文件替换”的错误。
您需要做的就是用空格替换分号,使 REPLACE 成为 ReplaceTagsOnConfigFiles.ps1 的参数,而不是新命令。
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "& 'D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1' REPLACE" > C:\Temp\b.out