如何在批处理脚本中运行powershell脚本和批处理脚本?

时间:2013-07-30 09:50:12

标签: powershell command-line command powershell-v2.0 command-prompt

我有一个名为oneclick.bat的控制器批处理文件,代码如下:

rem batch controller
rem wait for email input for ssh key generation...
rem call copyEnv.bat
call generateSshKey.bat %1
call gitClone.bat

在generateSshKey.bat中,我启动了这样的PowerShell脚本:

rem make sure powershell is able to run 
powershell.exe  set-executionpolicy remotesigned

rem start powershell and add ssh key to the server by ui aotumation
powershell.exe -noe -file SetSSHKeytoServer.ps1

然后gitClone.bat没有在命令窗口中运行

我怎样才能运行gitClone.bat?

2 个答案:

答案 0 :(得分:0)

如果要返回调用脚本,则不应使用阻止其返回的选项运行PowerShell。从-noe的最后一行删除generateSshKey.bat

-NoExit
    Does not exit after running startup commands.

答案 1 :(得分:0)

正如Ansgar Wiechers所指出的, -noe -NoExit 的缩写)会使PowerShell会话保持打开状态,因此 generateSshKey.bat 不退出, oneclick.bat 没有超过调用它的行。

如果您特意想要运行 SetSSHKeytoServer.ps1 的powershell会话保持活动状态(因为您第二次使用 -noe 切换但不是第一次,我推断这是故意的,你可以改变

call generateSshKey.bat %1

start generateSshKey.bat %1

请注意,这意味着 oneclick.bat 在调用 gitClone.bat 之前不会等待 generateSshKey.bat 完成,所以如果你需要按顺序运行它们,这是行不通的。只要 gitClone.bat generateSshKey.bat 仍在运行时启动它就可以正常工作。