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