[英]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 。 問題在於該腳本期望將REPLACE或ROLLBACK作為參數(如錯誤消息所示),但是您沒有向其傳遞任何參數。 分號是命令分隔符(例如在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.