访问vSphere 5、ESXi、虚拟机环境:进程、文件系统

本文关键字:进程 文件系统 环境 ESXi vSphere 访问 虚拟机 | 更新日期: 2023-09-27 18:10:15

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

希望能够:

  1. 按虚拟机名称上电
  2. 将ISO镜像从本地机器连接到已开机的虚拟机
  3. 将几个文件复制到虚拟机,到特定的文件夹(NANT和NUNIT)二进制文件和带有测试的dll)
  4. 运行刚拷贝的可执行文件并等待完成
  5. 从TEMP文件夹中获取文件,该路径必须由读取虚拟机环境变量
  6. 判断一个特定的进程是否在VM内运行

我想使用VmWare. vim .dll,这是VmWare基础设施(VI)工具包的一部分。我用c#和。net 4编写代码。打开/关闭电源的操作我可以很容易地完成,但是其他人呢?我不知道怎么做这些操作。在文档中没有找到任何东西。也许有其他工具/API可以帮助我?

之前我们使用VixCOM和Vestris。VmWareLib包装器,但我们有一个简单的VMWare工作站。现在我们转移到vSphere,这些API不能工作。

最诚挚的问候,亚历克斯

访问vSphere 5、ESXi、虚拟机环境:进程、文件系统

查看vSphere Web Services SDK:GuestFileManager,GuestOperationsManager和GuestProcessManager (http://pubs.vmware.com/vsphere-50/index.jsp?topic=/com.vmware.wssdk.apiref.doc_50/vim.vm.guest.ProcessManager.html)

我不是像你这样的开发人员,管理一个VM环境。使用VMware提供的API/SDK (http://www.vmware.com/support/developer/vc-sdk/index.html)当然可以完成您想要做的事情,但可能有更简单的方法。一种方法是使用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

希望对大家有所帮助

我们设法创建了一个运行vSphere虚拟机的NANT任务。谢谢你的建议!