简体   繁体   中英

how to run a powershell script and a batch script in a batch script?

i have controller batch file named oneclick.bat, code as below:

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

in generateSshKey.bat, i start a powershell script like this:

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

and then gitClone.bat did not run in the command window

how can i get the gitClone.bat run?

When you want to return to a calling script you shouldn't run PowerShell with an option that prevents it from returning. Remove -noe from the last line of generateSshKey.bat .

-NoExit
    Does not exit after running startup commands.

As Ansgar Wiechers pointed out, the -noe (short for -NoExit ) is keeps the PowerShell session open, so generateSshKey.bat doesn't exit, and oneclick.bat doesn't get past the line that called it.

If you specifically want the powershell session that runs SetSSHKeytoServer.ps1 to remain active (since you used the -noe switch the second time but not the first time, I'm inferring that this was deliberate), you could change

call generateSshKey.bat %1

to

start generateSshKey.bat %1

Note that this means that oneclick.bat won't wait for generateSshKey.bat to finish before calling gitClone.bat , so if you need to run them in sequence, this won't work. It will work as long as it's okay for gitClone.bat to start while generateSshKey.bat is still running.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM