0

複数の VMware マシンがあります。それらはすべてWindowsサーバーを実行しており、コピーしてダブルクリックして実行するのではなく、VirtualBox SDKのようにVMware APIを使用して、これらすべてのマシンでプログラムを実行したいと考えています。

VMware API に、プログラムを実行するように VMware マシンに指示できる機能はありますか?

4

1 に答える 1

6

VMware APIのドキュメントで報告されているように、必要な関数はVixVM_RunProgramInGuest()であり、ゲスト OS (仮想マシンで実行されている OS) で を使用して認証する必要がありますVixVM_LoginInGuest()

ドキュメントには、ゲスト OS でプログラムを呼び出す方法の例があります。これは、仮想マシン サーバーに接続し、仮想マシンを定義するファイルを開き、電源を入れる方法を示す完全な例です。重要なコードは次のとおりです。ただし、完全な例を読む必要があります。

// Authenticate for guest operations.   
jobHandle = VixVM_LoginInGuest(vmHandle,
  "vixuser", // userName
  "secret",  // password 
  0,         // options
  NULL,      // callbackProc
  NULL       // clientData
); 

err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);    

if (VIX_OK != err) {
  // Handle the error.
  goto abort;
}

Vix_ReleaseHandle(jobHandle);

// Run the target program.  
jobHandle = VixVM_RunProgramInGuest(vmHandle,
  "c:\\myProgram.exe",
  "/flag arg1 arg2",
  0,                  // options
  VIX_INVALID_HANDLE, // propertyListHandle
  NULL,               // callbackProc
  NULL                // clientData
); 

err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);

if (VIX_OK != err) {
  // Handle the error.
  goto abort;
}

Vix_ReleaseHandle(jobHandle);

仮想マシンサーバーに接続する部分は以下のものです。

jobHandle = VixHost_Connect(VIX_API_VERSION,
  VIX_SERVICEPROVIDER_VMWARE_SERVER,
  NULL,               // hostName
  0,                  // hostPort
  NULL,               // userName
  NULL,               // password
  0,                  // options
  VIX_INVALID_HANDLE, // propertyListHandle
  NULL,               // callbackProc
  NULL                // clientData
); 

err = VixJob_Wait(jobHandle, VIX_PROPERTY_JOB_RESULT_HANDLE, &hostHandle, VIX_PROPERTY_NONE);

if (VIX_OK != err) {
  // Handle the error.
  goto abort;
}

Vix_ReleaseHandle(jobHandle);
于 2012-08-26T16:40:36.593 に答える