Here are some conceptual answers that would work, and potentially can be expanded to launching any app in any virtual machine space, although insecurely.
Method 1. Drop boxes.
Each VM has a shared directory from the host machine. This directory must be publically writeable.
A script on any machine can write a file to any of these directories.
Each VM monitors its directory, and when the file has been closed, it immediately executes it, and deletes the file.
This is incredibly insecure. At minimum the execution program should be limited in what programs it can run.
Method 2. Ssh.
In general the command is
ssh user@hostname -c "Command line and parameters in quotes"
This can be implemented MUCH more securely
Method 3. Netcat. Might be more valuable if you had a semi-continuous stream of commands from machine A to VM machine B. The output of netcat on the client machine could be fed to bash. This gets trick for getting the results back, as backgrounded shell commands will have overlapping results. However if you were happy with command line results, then a simple ssh to the VM would be sufficient.
I expect other people to improve this answer, but it may give you things to start to tinker with.
I would have entered this as a comment and not an answer, but comments are too small.