Los scripts, en general, ejecutarán un comando y esperarán a que se ejecute. Solo una vez que el proceso iniciado por el comando finalice, su secuencia de comandos pasará al siguiente comando.
metasploit puede usarse en modo interactivo, y eso parece ser lo que estás tratando de hacer. Eso significa que el msfconsole es el proceso que se crea, por lo que la secuencia de comandos no continuará hasta que ese proceso termine.
Podría considerar el uso de algo como esperar interactuar con un programa que espera entradas mientras se está ejecutando. Alternativamente, muchas cosas que quieres hacer en metasploit se pueden hacer sin una sesión interactiva para que puedas intentar encontrar esos conjuntos de comandos y usarlos en su lugar.
o puedes hacerlo usando un lenguaje como ruby o python, here es un ejemplo de script en ruby creado por rapid7, los desarrolladores del marco metasploit.
Espero que ayude.