我正在尝试通过VirtualBox vboxmanage guestcontrol提供的命令行接口运行VirtualBox。
在这份文件之后,我运行这些命令:
vboxmanage startvm centos6;
vboxmanage guestcontrol "centos6" execute --image "/bin/ls" --username root --passwordfile pwd.txt --wait-exit --wait-stdout -- -l /usr;我有以下stdout:
Oracle命令行管理接口版本5.0.0 (C) 2005-2015保留所有权限。 用法: VBoxManage用户控制--详细说明-v-用户名-密码文件\--密码 运行公共选项-超时值-E-putenv=-未引用的-args-无概要argumentN[ argumentN]启动公共选项--超时值-E值-putenv =] --未引用的-args-无配置文件-- argument1 .argumentN]来自公共选项的版权--跟随[客服-src1 1.]抄袭-选项-跟随-目标-目录[客服-src1 1.]版权共有-选项-跟随[主机-src1 1.]版权共有-选项-跟踪-目标-目录[主机-src1 1.]mkdir\createdirectory--父母..。rmdir\reve目录-R\-递归.清除.移动名称[source1 .]临时的.安全的. VBoxManage客房控制--详细的 列出公共选项-选择关闭过程公共选项-选项<--会话-id区--会话名称[PID1 .]关闭公共选项--选项<--所有选项-会话-id-会话-名称-名称>updatega-更新-添加-源<来宾添加- .ISO>公共选项-选项-.]观察公共选项 语法错误:未知子命令:“执行”
发布于 2015-11-22 15:57:58
是的,执行似乎不再适用于最新的5.0.10版本的VirtualBox。尝试使用“run”而不是“execute”和“-exe”而不是“-image”。
还有--等待-退出被压制了。
下面是我现在使用的命令:$ VBoxManage --nologo guestcontrol "Windows7-64" run --exe "C:\Windows\SysWOW64\cmd.exe" foo.bat --username myname --verbose --wait-stdout --wait-stderr -- "/c" "f:\path\foo.bat" "arg1" "f:" "arg3"
该命令在OS/X上执行,以便在Windows64bit上执行带有三个参数的批处理文件foo.bat。第二个参数是'f:',它对应于我的程序所在的OS/X目录。在我的例子中,这个批处理文件使用windows 'cmake‘在Windows 64上编译C程序。它是交叉编译的另一种选择,有时更好,因为您可以使用性能更好的本机编译器,并且可以在其实际环境中测试可执行文件。
然而,“run-exe”与以前的“执行-映像”有某种不同,因为如果命令在终端shell中运行良好,我在emacs下遇到“编译”命令下的困难,可能是因为--等待退出不再存在。困难之处在于,VirtualBox VM运行的CPU消耗很大,而且没有停止。但从bash看,它看起来和以前非常相似。
当前的VBoxManage文档抑制了'execute‘和’-映像‘,但是使用过时(不再工作的)选项的旧示例仍然存在,不幸的是,这增加了混乱。
更新:在VirtualBox 5(我的是5.2.6)上,我正在做$ VBoxManage --nologo guestcontrol "Windows7-64" run --exe "C:\\Windows\\system32\\cmd.exe" foo.bat --username myname --verbose --wait-stdout --wait-stderr -- "C:\Windows\SysWOW64\cmd.exe" "/c" "f:\path\foo.bat" "arg1" "f:" "arg3"
直接启动64位cmd.exe不再起作用了。
https://stackoverflow.com/questions/33471119
复制相似问题