2013-07-13 153 views
0

我想通過REPLACE命令通過批處理文件來找出解決方案,因爲「ReplaceTagsOnConfigFiles.ps1」將在REPLACE選項或其他情況下執行該文件時起作用將要求[REPLACE | ROLLBACK]從批處理腳本傳遞參數到PowerShell腳本失敗

下面是批處理文件:

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從備份中檢索舊配置。注意:如果您之前使用'替換',此選項很有用。


號文件所取代

請幫我在這方面。

回答

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 
+0

當我改變了上面並執行它作爲批處理文件,我找不到任何生成日誌文件,並試圖將其拖放到命令刪除該批處理文件時提示,它會拋出如下信息:警告 已經有一些後退文件。你想繼續這個過程嗎? [Y]是[N]否[?]幫助(默認是「N」):是的 – user2578953

+0

我不認爲您的執行策略處理正如您所期望的那樣工作。查看更新的答案。如果沒有看到你的PowerShell代碼,就不能說出警告。 –

+0

我無法將代碼粘貼到此處。有沒有其他解決方案,這一個。 – user2578953

0

你得到的錯誤並不能直接從PowerShell的。大部分(除最後一行外)均爲ReplaceTagsOnConfigFiles.ps1。問題是這個腳本需要將REPLACEROLLBACK作爲參數(如錯誤消息所示),但是您傳遞的參數不是參數。分號是一個命令分隔符(就像在cmd中使用&符號一樣),所以你要讓PowerShell首先自己執行D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1,而且沒有參數。然後,您正在執行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 
+0

由於您剛剛接觸過stackoverflow,請注意,如果答案可解決您的問題,則應點擊該答案左側的複選標記以將其標記爲已接受。 –

相關問題