2
我正在開發供應商應用程序的部署腳本。它讀取映射各種環境的部署路徑的xml,然後遍歷各種服務器並將正確的文件複製並執行該轉出腳本。如果轉出腳本失敗,我希望腳本退出。部署腳本是一個perl腳本,我需要先調用.bat來設置一堆環境變量。我已經發行的所有與&的串成這些命令,你可以看到下面,使得系統變量env.bat文件集仍然可用perl腳本運行時:Powershell調用命令腳本返回碼
$cmdString = $destDrive + ": & call "+$lesDestDir+"data\env.bat & cd "+$rolloutDir+" & perl ..\JDH-rollout-2010.pl "+$rollout+" NC,r:\les"
write-host "cmdString: " $cmdString
Invoke-Command -session $session -ScriptBlock {cmd /v /k `"$args[0]`"} -args $cmdString
的調用命令如下像這樣用變量代換:
Invoke-Command -session $session -scriptblock {cmd /k "D: & call D:\XXXX\env.bat & cd D:\XXXX\RO-00102 & perl ..\JDH-rollout-2010.pl RO-00102 NC,r:\les"}
所以,問題是我怎麼可以從Perl腳本(這是在cmd中的上下文中運行的命令字符串中的最後一個命令)的返回碼返回到本地機器在哪裏運行腳本?對於我的方法,任何其他建議都是受歡迎的,因爲我的PowerShell經驗有限。
是否有一個原因,你是從cmd而不是Powershell設置環境變量? – SpellingD 2012-08-01 14:32:38
是的,它是供應商提供的腳本,每個環境都有所不同。我不想將它們的腳本轉換爲PowerShell,然後負責維護腳本,如果腳本發生變化。 – 2012-08-01 14:44:18