簡體   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