最新ではvmrun.exeが使えなくなったので対応(REST API化)した件(Vmware Workstation 15以降)

Windows 10 Update 1903 をいれたら、VMWare Workstation 14.0.7が立ち上がらなくなった。
というか、ブラックスクリーン状態?

多分、VMWare Workstation 14の最新版にすればいいのかと思ったが、
もう、ついでだから最新メジャーバージョンのVMWare Workstation 15にしてみた。

が、バッチで仮想マシンの自動起動に利用していたvmrun.exeがこんどは使えなくなってる・・・。
ダウンロードのページにもでてこない。もうサポートしないみたい。

で、代替手段を探ってみたらあったのは「REST API」を使えって事。
使えるようになるまで、手探りだったがわかったのでまとめ。

1.REST APIをつかえるようにする。
 VMWareのフォルダでコマンドプロンプトを立ち上げる。
 たいていは「C:\Program Files (x86)\VMware\VMware Player」だとおもう。
 で、そこで、「vmrest.exe -C」といれるとユーザー名とパスワードを聞かれる。
 これは後で使うWeb画面で使用するユーザ名、パスワードになるので、好きに設定してメモっておく。

 設定したら「vmrest.exe -p xxxx」を実行する。 xxxxは使用したいポート番号。指定しなければデフォルトは8697。

 画面に表示されたアドレスでブラウザに接続する。

 ※あくまでもローカルでやりたいとき。外部からコントロールしたい場合はopen sslを導入して証明書も必要ですが、ここには書きません。




2.ブラウザを立ち上げると、以下のようになるので、右上のAuthenticateを押す。



3.1.で設定したユーザー名/パスワードを入力してSave



4.「VM Management」の「Hide/Show」をおすと展開される。



5.いちばん上の「Get」の「/vms」を押す。



6.スクロールして「Try It」を押す。



7.コマンドと登録済みの仮想マシンの情報が一覧化されるので、自分の目的の仮想マシンのIDをコピーしてテキストエディタに張り付ける。



8.上記のコマンドを以下のようにすると、VMWareを立ち上げるコマンドになる。
  1.(超重要)「'」シングルクォートを「"」ダブルクォートに変える
  2.「/vms」のあとに7.で取得したマシンID+「/power」にする。
  3.「GET」を「PUT」に変える。
  4.「--header 'Accept:~'」をコピーして「Accept:」を「Content-Type:」に書き換えたものを追加する。
  5.コマンドの先頭は「echo.on|」を入れる(onのあとにスペースをいれてはだめ)。
  6.コマンドの最後に「-d @-」を入れる。

 例えば

curl 'http://127.0.0.1:xxxxx/api/vms' -X GET --header 'Accept: application/vnd.vmware.vmw.rest-v1+json' --header 'Authorization: Basic cTESTTESTTESTTESTE='



echo.on| curl "http://127.0.0.1:xxxx/api/vms/MACHINEIDMACHINEID/power" -X PUT --header "Content-Type: application/vnd.vmware.vmw.rest-v1+json" --header "Accept: application/vnd.vmware.vmw.rest-v1+json" --header "Authorization: Basic cTESTTESTTESTTESTE=" -d @-

(※:「MACHINEIDMACHINEID」の部分は7.で取得したIDの意味)
とこんな感じ。

出来上がった一番下のコマンドをうてば起動する。

※注意:立ち上がった仮想マシンはバックグラウンドで起動する。VMWare Workstationで確認すると「パワーオン」になっている。
これをフォアグラウンドにするには、VMWare Workstationでそのまま「仮想マシンの再生」をすればいい。
これがわかっていなくて「コマンド利いていないじゃん」となってしまわないように。(実際、自分はそう思ってました。)
立ち上がっている場合は「vmware-vmx.exe」も実体のプロセスとして立ち上がっています。




バッチファイルにする場合はこんな感じで書いておくといい。
cd "C:\Program Files (x86)\VMware\VMware Player"
start vmrest -p xxxx
ping -n 2 localhost >nul 2>&1
echo.on| curl "http://127.0.0.1:xxxx/api/vms/MACHINEIDMACHINEID/power" -X PUT --header "Content-Type: application/vnd.vmware.vmw.rest-v1+json" --header "Accept: application/vnd.vmware.vmw.rest-v1+json" --header "Authorization: Basic cTESTTESTTESTTESTE=" -d @-

コメント

このブログの人気の投稿

楽天ラッキーくじ 処理設定ページ

楽天ラッキーくじ スタートページ