1

我们有一个 vSphere 5 Hypervisor,它运行几个 Windows XP/Vista/7 虚拟机,每个虚拟机上都安装了 VMWare 工具。

希望能够:

  1. 按名称打开 VM
  2. 将 ISO 映像从本地计算机连接到已启动的 VM
  3. 将几个文件复制到虚拟机,复制到特定文件夹(NANT 和 NUNIT 二进制文件和带有测试的 dll)
  4. 运行刚刚复制的可执行文件并等待它完成
  5. 从 TEMP 文件夹中获取文件,该路径必须通过读取 VM 的环境变量来确定
  6. 确定特定进程是否在 VM 内运行

我想使用 VmWare.Vim.dll,它是 VmWare Infrastructure (VI) 工具包的一部分。我用 C# 和 .NET 4 编写代码。我可以轻松完成开机/关机操作,但其他人呢?我不知道如何进行这些操作。在文档中没有找到任何东西。也许还有其他工具/API可以帮助我?

以前我们使用 VixCOM 和 Vestris.VmWareLib 包装器,但我们有一个简单的 VMWare 工作站。现在我们迁移到 vSphere 并且这些 API 不起作用。

最好的问候, 亚历克斯

4

3 答案 3

0

我不是像您这样的开发人员,请管理 VM envt。使用 VMware (http://www.vmware.com/support/developer/vc-sdk/index.html) 提供的 API/SDK 当然可以完成您想做的事情,但可能有更简单的方式。一种方法是使用 PowerCLi,它是 PowerShell 的一个管理单元,您可能知道,它基于 C# 并且可以导入其库。

然后你可以做这样的事情并顺利进行:

#start VM
Start-VM -VM $vmName

#mount ISO file
Get-VM -Name $vmName | Get-CDDrive | Set-CDDrive -v -IsoPath <ISO-file-name> -Confirm:$false

#copy files
Copy-Item -Path $somePath -Destination $someDestination

#invoke 'script' that will run .exe file (example exe below)
$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM VM -HostCredential $hostCredential -GuestCredential $guestCredential -ScriptType Bat

#check for list of processes running
$script2 = '"WMIC PROCESS get Caption,Commandline,Processid"'
Invoke-VMScript -ScriptText $script2 -VM VM -HostCredential $hostCredential -GuestCredential $guestCredential -ScriptType Bat

希望这个对你有帮助

于 2012-02-25T17:18:40.030 回答
0

查看 vSphere Web 服务 SDK:GuestFileManager、GuestOperationsManager 和 GuestProcessManager (http://pubs.vmware.com/vsphere-50/index.jsp?topic=/com.vmware.wssdk.apiref.doc_50/vim.vm.guest。进程管理器.html)

于 2012-04-23T22:18:16.753 回答
0

我们设法创建了一个运行 vSphere 虚拟机的 NANT 任务。谢谢小伙伴们的提示!

于 2012-07-31T14:03:06.900 回答