LoginSignup
15
19

More than 5 years have passed since last update.

VMWare VIXを使ってVMWare Playerをコマンドプロンプトから操作する

Last updated at Posted at 2015-07-02

概要

VMWare VIXのvmrun.exeを利用して、VMWare Playerの仮想マシンをコマンドプロンプトから起動したり終了したりコマンドを投入したりします。

必要なもの

  • VMWare Player
  • VMWare VIX

検証環境

ホスト環境

  • Windows 8.1 64bit
  • VMware-player-7.1.0-2496824
  • VMware-VIX-1.14.1-2496824

仮想マシン

  • FreeBSD 10.1 amd64
    • pkgngから「open-vm-tools」(オープン版のVMWare Tools)をインストール済み

コマンドラインからの操作

  • ESXi用のコマンドなど、Playerで動かないものは省きました。
  • プラットフォームの指定について、VMWare Playerは「-T player」ですが、省いても動いたので省きました。

前準備

毎度毎度フルパスを書くには面倒なので、環境変数を設定しておきます。

set VMRUN_EXE="C:\Program Files (x86)\VMware\VMware VIX\vmrun.exe"
set VM_VMX=VM-FreeBSD.vmx

VMWare Toolsがなくてもできること

仮想マシンの起動・終了・再起動・サスペンドは、VMWare Toolsがなくても実行できます。

仮想マシンの起動(start)

rem 通常の起動
%VMRUN_EXE% start "%VM_VMX%"
rem GUIなし(非表示)で起動
%VMRUN_EXE% start "%VM_VMX%" nogui

仮想マシンの終了(stop)

rem シャットダウン
%VMRUN_EXE% stop "%VM_VMX%"
rem 強制シャットダウン
%VMRUN_EXE% stop "%VM_VMX%" hard

仮想マシンの再起動(reset)

rem 再起動
%VMRUN_EXE% reset "%VM_VMX%"
rem 強制再起動
%VMRUN_EXE% reset "%VM_VMX%" hard

仮想マシンのサスペンド(suspend)

rem サスペンド
%VMRUN_EXE% suspend "%VM_VMX%"
rem 強制サスペンド
%VMRUN_EXE% suspend "%VM_VMX%" hard

VMWare Toolsがあればできること

VMWare Toolsがインストール済みの仮想マシンに対しては、コマンドを実行したりファイルを転送したりできます。

※ユーザ名「hoge」パスワード「pass」を設定している場合、で検証します

<コマンド実行系>

※ユーザ名とパスワードが必要

プログラムの実行(runProgramInGuest)

rem とりあえずlsしてみる
%VMRUN_EXE% -gu hoge -gp pass runProgramInGuest "%VM_VMX%" /bin/ls
rem スクリプトを実行する(実行権限があるとき)
%VMRUN_EXE% -gu hoge -gp pass runProgramInGuest "%VM_VMX%"  /home/hoge/aaa.sh
rem スクリプトを実行する(実行権限がないとき)
%VMRUN_EXE% -gu hoge -gp pass runProgramInGuest "%VM_VMX%" /bin/sh -c "/bin/sh /home/hoge/aaa.sh"

※カレントディレクトリは「/」になってました
※PATHが通ってないっぽいので、コマンドもフルパスで指定します
※実行結果はコンソールに表示されません

スクリプトの実行(runScriptInGuest)

%VMRUN_EXE% -gu hoge -gp pass runScriptInGuest "%VM_VMX%" /bin/sh /home/hoge/aaa.sh

runProgramInGuestとほとんど同じ。
こちらでは、インタプリタのパスとスクリプトのパスを指定します。

<プロセス操作系>

プロセスの一覧を表示(listProcessesInGuest)

%VMRUN_EXE% -gu hoge -gp pass listProcessesInGuest "%VM_VMX%"

プロセスを消す(killProcessInGuest)

%VMRUN_EXE% -gu hoge -gp pass killProcessInGuest "%VM_VMX%" 858

<ファイル操作系>

※ユーザ名とパスワードが必要

ファイルの存在をチェック(fileExistsInGuest)

rem ファイルが存在するとき
%VMRUN_EXE% -gu hoge -gp pass fileExistsInGuest "%VM_VMX%" /home/hoge/aaa.sh
rem => The file exists.
rem => %ERRORLEVEL% は 0 になる

rem ファイルが存在しないとき
%VMRUN_EXE% -gu hoge -gp pass fileExistsInGuest "%VM_VMX%" /home/hoge/bbb.sh
rem => The file does not exist.
rem => %ERRORLEVEL% は -1 になる

ファイル名を変更する(renameFileInGuest)

%VMRUN_EXE% -gu hoge -gp pass renameFileInGuest "%VM_VMX%" /home/hoge/from-file /home/hoge/to-file

ファイルを削除する(deleteFileInGuest)

%VMRUN_EXE% -gu hoge -gp pass deleteFileInGuest "%VM_VMX%" /home/hoge/to-file

ディレクトリの存在チェック(directoryExistsInGuest)

rem ディレクトリが存在するとき
%VMRUN_EXE% -gu hoge -gp pass directoryExistsInGuest "%VM_VMX%" /home/hoge
rem => The directory exists.
rem => %ERRORLEVEL% は 0 になる

rem ディレクトリが存在しないとき
%VMRUN_EXE% -gu hoge -gp pass directoryExistsInGuest "%VM_VMX%" /home/fugafuga
rem => The directory does not exist.
rem => %ERRORLEVEL% は -1 になる

ディレクトリを作成する(createDirectoryInGuest)

%VMRUN_EXE% -gu hoge -gp pass createDirectoryInGuest "%VM_VMX%" /home/hoge/newdir

ファイルの一覧を取得する(listDirectoryInGuest)

%VMRUN_EXE% -gu hoge -gp pass listDirectoryInGuest "%VM_VMX%" /home/hoge

ディレクトリを削除する(deleteDirectoryInGuest)

%VMRUN_EXE% -gu hoge -gp pass deleteDirectoryInGuest "%VM_VMX%" /home/hoge/newdir

<データ転送系>

※ユーザ名とパスワードが必要

ホストから仮想マシンへファイルを転送する(copyFileFromHostToGuest)

%VMRUN_EXE% -gu hoge -gp pass copyFileFromHostToGuest "%VM_VMX%" hostfile.txt /home/hoge/hostfile.txt

仮想マシンからホストへファイルを転送する(copyFileFromGuestToHost)

%VMRUN_EXE% -gu hoge -gp pass copyFileFromGuestToHost "%VM_VMX%" /home/hoge/guestfile.txt guestfile.txt

<共有フォルダ設定>

共有フォルダを有効にする(enableSharedFolders)

%VMRUN_EXE% enableSharedFolders "%VM_VMX%"

※再起動すると元に戻る

共有フォルダを無効にする(disableSharedFolders)

%VMRUN_EXE% disableSharedFolders "%VM_VMX%"

※再起動すると元に戻る

共有フォルダ設定を追加する(addSharedFolder)

%VMRUN_EXE% addSharedFolder "%VM_VMX%" sharename %CD%

※これは再起動しても残る

共有フォルダ設定を削除する(removeSharedFolder)

%VMRUN_EXE% removeSharedFolder "%VM_VMX%" sharename

共有フォルダの読み書き設定を変更する(setSharedFolderState)

rem 共有フォルダを書き込みOKの設定にする
%VMRUN_EXE% setSharedFolderState "%VM_VMX%" sharename %CD% writable

rem 共有フォルダを読み取り専用にする。ついでにホスト側のパスも変更する。
%VMRUN_EXE% setSharedFolderState "%VM_VMX%" sharename %CD%\..\ readonly

<その他>

※有効なログインユーザが必要

仮想マシンのスクリーンショットを取得する(captureScreen)

%VMRUN_EXE% -gu hoge -gp pass captureScreen "%VM_VMX%" %USERPROFILE%\Desktop\captuer.png

仮想マシンの環境変数に書き込む?(writeVariable)

よくわかりませんが、とりあえず記入

rem 一時変数の定義
%VMRUN_EXE% -gu hoge -gp pass writeVariable "%VM_VMX%" guestVar HOGE_VAR1 1111

rem 設定ファイルの変数を定義(.vmxファイルに保存される)
%VMRUN_EXE% -gu hoge -gp pass writeVariable "%VM_VMX%" runtimeConfig HOGE_VAR2 2222

rem 仮想マシンの環境変数に書き込み
%VMRUN_EXE% -gu root -gp vmpass writeVariable "%VM_VMX%" guestEnv HOGE_VAR3 3333

※「guestEnv」で書き込む場合、管理者ユーザを指定する必要あり。

仮想マシンの環境変数を表示?(readVariable)

よくわかりませんが、とりあえず記入

rem 一時変数から読み込み
%VMRUN_EXE% -gu hoge -gp pass readVariable "%VM_VMX%" guestVar HOGE_VAR1

rem 設定ファイルから読み込み
%VMRUN_EXE% -gu hoge -gp pass readVariable "%VM_VMX%" runtimeConfig HOGE_VAR2

rem 仮想マシンの環境変数から読み込み
%VMRUN_EXE% -gu root -gp vmpass readVariable "%VM_VMX%" guestEnv HOGE_VAR3

仮想マシンのメンテナンス

仮想マシンの一覧を表示(list)

%VMRUN_EXE% list

仮想マシンの削除(deleteVM)

%VMRUN_EXE% deleteVM "%VM_VMX%"

※仮想マシンが起動中は実行不可。stopしてから。

仮想マシンをコピー(clone)

%VMRUN_EXE% clone "%VM_VMX%" ..\distdir

※仮想マシンが起動中は実行不可。stopしてから。

参考資料

15
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
19