【问题标题】:how to run a powershell script and a batch script in a batch script?如何在批处理脚本中运行powershell脚本和批处理脚本?
【发布时间】:2013-07-30 09:42:14
【问题描述】:

我有一个名为 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 运行?

【问题讨论】:

    标签: powershell command-line command powershell-2.0 command-prompt


    【解决方案1】:

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

    -NoExit
        Does not exit after running startup commands.
    

    【讨论】:

      【解决方案2】:

      正如 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 仍在运行时启动,它就会工作。

      【讨论】:

      • 感谢@Adi Inbar;我需要按顺序执行批处理脚本。 Ansgar Wiechers 的回答对我有用。
      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      相关资源
      最近更新 更多