vmrun 命令示例

以下命令行示例在 VMware Fusion 上运行。Ubuntu16 是适用于 Linux 的虚拟机示例,Win10 是适用于 Windows 的虚拟机示例。

重新引导命令

  • 重新引导虚拟机。
    vmrun reset Win10.vmwarevm/Win10.vmx soft

快照命令

  • 创建虚拟机的快照。
    vmrun snapshot Ubuntu16.vmwarevm/Ubuntu16.vmx mySnapshot
  • 列出虚拟机上的快照,从而显示在上一命令中创建的快照。
    vmrun listSnapshots Ubuntu16.vmwarevm/Ubuntu16.vmx
  • 还原为您创建的快照(这会挂起虚拟机),并重新启动以恢复运行。
    vmrun revertToSnapshot Ubuntu16.vmwarevm/Ubuntu16.vmx mySnapshot
    vmrun start Ubuntu16.vmwarevm/Ubuntu16.vmx
  • 指定快照名称以将其删除。
    vmrun deleteSnapshot Ubuntu16.vmwarevm/Ubuntu16.vmx mySnapshot

网络适配器命令

  • 列出虚拟机上的所有网络适配器。
    vmrun listNetworkAdapters Win10.vmwarevm/Win10.vmx
  • 将 NAT 网络适配器添加到虚拟机中。
    vmrun addNetworkAdapter Win10.vmwarevm/Win10.vmx nat

主机网络命令

  • 列出主机上的所有网络。
    vmrun listHostNetworks
  • 使用提供的主机网络名称、协议、主机端口、客户机 IP 地址、客户机端口和说明示例,在主机网络上添加端口转发。
    sudo vmrun setPortForwarding vmnet2 tcp 8082 1.1.1.2 88 portforwarding-description

运行客户机应用程序

大多数
vmrun
客户机操作要求在客户机操作系统上安装 VMware Tools。
  • 在 Windows 客户机上以最小化方式启动该命令工具。
    vmrun -gu guestUser -gp guestPassword runProgramInGuest Win10.vmwarevm/Win10.vmx -interactive cmd.exe
  • 在 Windows 客户机上将该命令工具作为桌面上的活动窗口启动。
    vmrun -gu guestUser -gp guestPassword runProgramInGuest Win10.vmwarevm/Win10.vmx -activeWindow -interactive cmd.exe
  • 以 Perl 作为脚本解释程序,在 Windows 客户机上运行脚本。下面是两个单独示例。
    vmrun -gu guestUser -gp guestPassword runScriptInGuest Win10.vmwarevm/Win10.vmx -interactive "C:\perl\bin\perl.exe" "system('notepad.exe');"
    vmrun -gu guestUser -gp guestPassword runScriptInGuest Win10.vmwarevm/Win10.vmx -interactive "" "C:\perl\perl.exe C:\script.pl"
  • 运行批处理脚本并随后保持运行。要在 Windows 上使用
    cmd.exe
    ,您必须将脚本解释程序指定为 Null。
    vmrun -gu guestUser -gp guestPassword runScriptInGuest Win10.vmwarevm/Win10.vmx "" "cmd.exe /k \"C:\\Program Files\\Microsoft Visual Studio\\VC\\vcvarsall.bat\" x86"
  • 在 Linux 客户机上运行 Bash shell 脚本文件或 Perl 脚本。
    vmrun -gu guestUser -gp guestPassword runScriptInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx -interactive "" "/bin/bash myscript"
    vmrun -gu guestUser -gp guestPassword runScriptInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx -interactive "/usr/bin/perl" "system('firefox');"
  • 在 Linux 客户机上启动 X 时钟,这需要在控制台上显示
    -display
    选项。
    vmrun -gu guestUser -gp guestPassword runProgramInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx /usr/bin/xclock -display :0
  • 运行相同的 X 时钟命令,但将控制权立即返回给控制台。
    vmrun -gu guestUser -gp guestPassword runProgramInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx -noWait /usr/bin/xclock -display :0
  • 运行 Firefox。
    vmrun -gu guestUser -gp guestPassword runProgramInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx /usr/bin/firefox --display=:0
  • 使用
    guestEnv
    参数设置客户机环境需要在 Linux 上具有 root 权限,因为该更改影响其他用户发出的后续命令。
    vmrun -gu guestUser -gp guestPassword writeVariable Ubuntu16.vmwarevm/Ubuntu16.vmx guestEnv SRC tmp.example.com:1666
  • 列出 Linux 客户机中的进程并结束编号为 8192 的进程。
    vmrun -gu guestUser -gp guestPassword listProcessesInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx
    vmrun -gu guestUser -gp guestPassword killProcessInGuest UUbuntu16.vmwarevm/Ubuntu16.vmx 8192
  • 在 Linux 客户机上运行 Perl 脚本以从文件中移除 DOS 样式的回车。
    vmrun -gu guestUser -gp guestPassword runProgramInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx /usr/bin/perl -e "open(FILE, '>/tmp/unix.txt'); while (<>) { s/\r\n/\n/ ; print FILE}" /tmp/dos.txt
  • 在 Windows 客户机上运行 Perl 脚本以在文件中插入 DOS 样式的回车。
    vmrun -gu guestUser -gp guestPassword runProgramInGuest Win10.vmwarevm/Win10.vmx C:\cygwin\bin\perl.exe -e "open(FILE, ‘>C:\Users\user\dos.txt’); while (<>) { s/\n/\r\n/ ; print FILE}" C:\Users\guestUser\unix.txt

客户机到主机文件操作

  • 要将文件从主机拷贝到客户机,用户必须具有目标的写入权限。
    vmrun -gu guestUser -gp guestPassword copyFileFromHostToGuest Ubuntu16.vmwarevm/Ubuntu16.vmx ~/img.db /tmp/img.db
  • 要将文件从客户机拷贝到主机,用户必须具有源文件的读取权限。
    vmrun -gu guestUser -gp guestPassword copyFileFromGuestToHost Ubuntu16.vmwarevm/Ubuntu16.vmx /home/username/addr addr.txt
  • 启用共享文件夹。
    vmrun enableSharedFolders Ubuntu16.vmwarevm/Ubuntu16.vmx
  • 将 Mac 主机上的文件夹与特定 Linux 客户机共享。
    在共享文件夹之前,您必须使用
    enabledSharedFolders
    选项启用这些文件夹,或者在虚拟机的
    共享设置
    面板中选择
    启用共享文件夹
    以执行该操作。在 Linux 客户机上,可以共享
    /mnt/hgfs
    目录,但也可以将其他目录作为共享文件夹。
    vmrun addSharedFolder Ubuntu16.vmwarevm/Ubuntu16.vmx sharedFolderName ~/Share
  • 将共享文件夹指定为只读或删除共享文件夹。
    默认情况下,共享文件夹是可写的。
    vmrun setSharedFolderState Ubuntu16.vmwarevm/Ubuntu16.vmx sharedFolderName ~/Share readonly
    vmrun removeSharedFolder Ubuntu16.vmwarevm/Ubuntu16.vmx sharedFolderName
    在 Windows Vista 和 Windows 7 或更高版本的客户机上,仅 Administrator 帐户可以使用
    copyFileFromHostToGuest
    deleteFileInGuest
    选项在
    C:\
    和系统文件夹中写入和删除文件,或者使用
    createDirectoryInGuest
    deleteDirectoryInGuest
    选项修改系统目录。常规用户无法执行这些操作,即使具有管理员权限的用户也是如此。

客户机变量和环境

  • 从主机中,在虚拟机上设置客户机变量。
    vmrun writeVariable Win10.vmwarevm/Win10.vmx guestVar vmstartdate 21April2017
  • 在客户机操作系统上,读取刚设置的客户机变量。
    > rpctool.exe "info-get guestinfo.vmstartdate"
    $ vmware-rpctool "info-get guestinfo.vmstartdate"
  • 从主机中,在 Linux 虚拟机上设置客户机环境变量,并将环境变量写入到临时文件以进行验证。
    vmrun writeVariable Ubuntu16.vmwarevm/Ubuntu16.vmx guestEnv LD_LIBRARY_PATH /usr/local/lib Guest user: root Guest password:
    vmrun runScriptInGuest Ubuntu16.vmwarevm/Ubuntu16.vmx /bin/bash "/usr/bin/env > /tmp/env.out" Guest user: root Guest password:
    vmrun
    命令中使用
    runScriptInGuest
    选项时,不会向主机发送任何输出。请在客户机上的
    /tmp/env.out
    文件中查找命令输出。
  • 在 Linux 客户机上,确定 IP 地址并在客户机变量中设置该地址。
    $ ipaddr=`ifconfig eth0 | grep inet.addr` $ vmware-rpctool "info-set guestinfo.theip $ipaddr"
  • 从主机中,检索刚为客户机设置的 IP 地址。
    vmrun readVariable Ubuntu10/Ubuntu10.vmx guestVar theip

常规命令

  • 列出运行的虚拟机。
    vmrun list Total running VMs: 2
    Absolute-path-to-virtual-machine
    .vmx
    Absolute-path-to-virtual-machine
    .vmx
  • 准备安装 VMware Tools。
    vmrun installTools Ubuntu16.vmwarevm/Ubuntu16.vmx

模板虚拟机命令

  • 下载 VMware Project Photon 操作系统虚拟机。
    vmrun
    downloadPhotonVM
    ~