vSphere命令行接口

在ESXI主机上挂载U盘, 服务器上已配置直通

  • 使用putty登录esxi服务器
  • 执行命令vim-cmd vmsvc/getallvms查看所有虚拟机
[root@localhost:~] vim-cmd vmsvc/getallvms
Vmid      Name                         File                       Guest OS      Version   Annotation
1      ate-tester1   [datastore1] ate-tester1/ate-tester1.vmx   windows7Guest   vmx-11
  • 执行命令vim-cmd vmsvc/device.getdevices 1查看虚拟机1上的所有设备
[root@localhost:~] vim-cmd vmsvc/device.getdevices 1
Devices:

(vim.vm.VirtualHardware) {
   numCPU = 2,
   numCoresPerSocket = 1,
   memoryMB = 3072,
   virtualICH7MPresent = false,
   virtualSMCPresent = false,
   device = (vim.vm.device.VirtualDevice) [
      (vim.vm.device.VirtualIDEController) {
         key = 200,
         deviceInfo = (vim.Description) {
            label = "IDE 0",
            summary = "IDE 0"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = <unset>,
         unitNumber = <unset>,
         busNumber = 0,
      },
      (vim.vm.device.VirtualIDEController) {
         key = 201,
         deviceInfo = (vim.Description) {
            label = "IDE 1",
            summary = "IDE 1"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = <unset>,
         unitNumber = <unset>,
         busNumber = 1,
         device = (int) [
            3002
         ]
      },
      (vim.vm.device.VirtualPS2Controller) {
         key = 300,
         deviceInfo = (vim.Description) {
            label = "PS2 controller 0",
            summary = "PS2 controller 0"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = <unset>,
         unitNumber = <unset>,
         busNumber = 0,
         device = (int) [
            600,
            700
         ]
      },
      (vim.vm.device.VirtualPCIController) {
         key = 100,
         deviceInfo = (vim.Description) {
            label = "PCI controller 0",
            summary = "PCI controller 0"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = <unset>,
         unitNumber = <unset>,
         busNumber = 0,
         device = (int) [
            500,
            12000,
            7000,
            1000,
            4000
         ]
      },
      (vim.vm.device.VirtualSIOController) {
         key = 400,
         deviceInfo = (vim.Description) {
            label = "SIO controller 0",
            summary = "SIO controller 0"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = <unset>,
         unitNumber = <unset>,
         busNumber = 0,
         device = (int) [
            8000
         ]
      },
      (vim.vm.device.VirtualKeyboard) {
         key = 600,
         deviceInfo = (vim.Description) {
            label = "Keyboard ",
            summary = "Keyboard"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = 300,
         unitNumber = 0
      },
      (vim.vm.device.VirtualPointingDevice) {
         key = 700,
         deviceInfo = (vim.Description) {
            label = "Pointing device",
            summary = "Pointing device; Device"
         },
         backing = (vim.vm.device.VirtualPointingDevice.DeviceBackingInfo) {
            deviceName = "",
            useAutoDetect = false,
            hostPointingDevice = "autodetect"
         },
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = 300,
         unitNumber = 1
      },
      (vim.vm.device.VirtualVideoCard) {
         key = 500,
         deviceInfo = (vim.Description) {
            label = "Video card ",
            summary = "Video card"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = 100,
         unitNumber = 0,
         videoRamSizeInKB = 8192,
         numDisplays = 1,
         useAutoDetect = false,
         enable3DSupport = false,
         enableMPTSupport = <unset>,
         use3dRenderer = "automatic",
         graphicsMemorySizeInKB = 262144
      },
      (vim.vm.device.VirtualVMCIDevice) {
         key = 12000,
         deviceInfo = (vim.Description) {
            label = "VMCI device",
            summary = "Device on the virtual machine PCI bus that provides support for the virtual machine communication interface"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.PciBusSlotInfo) {
            pciSlotNumber = 33
         },
         controllerKey = 100,
         unitNumber = 17,
         id = -1708029162,
         allowUnrestrictedCommunication = false,
         filterEnable = true,
         filterInfo = (vim.vm.device.VirtualVMCIDevice.FilterInfo) null
      },
      (vim.vm.device.VirtualUSBController) {
         key = 7000,
         deviceInfo = (vim.Description) {
            label = "USB controller ",
            summary = "Auto connect Disabled"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualUSBController.PciBusSlotInfo) {
            pciSlotNumber = 34,
            ehciPciSlotNumber = 35
         },
         controllerKey = 100,
         unitNumber = 22,
         busNumber = 0,
         device = (int) [
            0
         ],
         autoConnectDevices = false,
         ehciEnabled = true
      },
      (vim.vm.device.VirtualUSB) {
         key = 0,
         deviceInfo = (vim.Description) {
            label = "USB 1",
            summary = "SanDisk Extreme"
         },
         backing = (vim.vm.device.VirtualUSB.USBBackingInfo) {
            deviceName = "path:1/9 version:2",
            useAutoDetect = <unset>
         },
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = 7000,
         unitNumber = 0,
         connected = true,
         vendor = 1921,
         product = 21888,
         family = (string) [
            "storage"
         ],
         speed = (string) [
            "high"
         ]
      },
      (vim.vm.device.VirtualLsiLogicSASController) {
         key = 1000,
         deviceInfo = (vim.Description) {
            label = "SCSI controller 0",
            summary = "LSI Logic SAS"
         },
         backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.PciBusSlotInfo) {
            pciSlotNumber = 160
         },
         controllerKey = 100,
         unitNumber = 3,
         busNumber = 0,
         device = (int) [
            2000
         ],
         hotAddRemove = true,
         sharedBus = "noSharing",
         scsiCtlrUnitNumber = 7
      },
      (vim.vm.device.VirtualCdrom) {
         key = 3002,
         deviceInfo = (vim.Description) {
            label = "CD/DVD drive 1",
            summary = "ISO [datastore1] cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816.iso"
         },
         backing = (vim.vm.device.VirtualCdrom.IsoBackingInfo) {
            fileName = "[datastore1] cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816.iso",
            datastore = 'vim.Datastore:5e0026d9-a647150e-d8a8-4cedfb76e9d5',
            backingObjectId = <unset>
         },
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) {
            startConnected = true,
            allowGuestControl = true,
            connected = true,
            status = "ok"
         },
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = 201,
         unitNumber = 0
      },
      (vim.vm.device.VirtualDisk) {
         key = 2000,
         deviceInfo = (vim.Description) {
            label = "Hard disk 1",
            summary = "209,715,200 KB"
         },
         backing = (vim.vm.device.VirtualDisk.FlatVer2BackingInfo) {
            fileName = "[datastore1] ate-tester1/ate-tester1.vmdk",
            datastore = 'vim.Datastore:5e0026d9-a647150e-d8a8-4cedfb76e9d5',
            backingObjectId = "",
            diskMode = "persistent",
            split = false,
            writeThrough = false,
            thinProvisioned = false,
            eagerlyScrub = <unset>,
            uuid = "6000C294-7b3f-53be-cb4b-ee5e3d92722e",
            contentId = "7d0a0813c0306b532b906208c88ac9c7",
            changeId = <unset>,
            parent = (vim.vm.device.VirtualDisk.FlatVer2BackingInfo) null,
            deltaDiskFormat = <unset>,
            digestEnabled = false,
            deltaGrainSize = <unset>,
            deltaDiskFormatVariant = <unset>,
            sharing = "sharingNone"
         },
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = 1000,
         unitNumber = 0,
         capacityInKB = 209715200,
         capacityInBytes = 214748364800,
         shares = (vim.SharesInfo) {
            shares = 1000,
            level = "normal"
         },
         storageIOAllocation = (vim.StorageResourceManager.IOAllocationInfo) {
            limit = -1,
            shares = (vim.SharesInfo) {
               shares = 1000,
               level = "normal"
            },
            reservation = 0
         },
         diskObjectId = "1-2000",
         vFlashCacheConfigInfo = (vim.vm.device.VirtualDisk.VFlashCacheConfigInfo) null,
      },
      (vim.vm.device.VirtualFloppy) {
         key = 8000,
         deviceInfo = (vim.Description) {
            label = "Floppy drive 1",
            summary = "Remote"
         },
         backing = (vim.vm.device.VirtualFloppy.RemoteDeviceBackingInfo) {
            deviceName = "",
            useAutoDetect = false
         },
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) {
            startConnected = false,
            allowGuestControl = true,
            connected = false,
            status = "ok"
         },
         slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
         controllerKey = 400,
         unitNumber = 0
      },
      (vim.vm.device.VirtualE1000) {
         key = 4000,
         deviceInfo = (vim.Description) {
            label = "Network adapter 1",
            summary = "VM Network"
         },
         backing = (vim.vm.device.VirtualEthernetCard.NetworkBackingInfo) {
            deviceName = "VM Network",
            useAutoDetect = false,
            network = 'vim.Network:HaNetwork-VM Network',
            inPassthroughMode = <unset>
         },
         connectable = (vim.vm.device.VirtualDevice.ConnectInfo) {
            startConnected = true,
            allowGuestControl = true,
            connected = true,
            status = "ok"
         },
         slotInfo = (vim.vm.device.VirtualDevice.PciBusSlotInfo) {
            pciSlotNumber = 32
         },
         controllerKey = 100,
         unitNumber = 7,
         addressType = "generated",
         macAddress = "00:0c:29:31:8b:16",
         wakeOnLanEnabled = true,
         resourceAllocation = (vim.vm.device.VirtualEthernetCard.ResourceAllocation) {
            reservation = 0,
            share = (vim.SharesInfo) {
               shares = 50,
               level = "normal"
            },
            limit = -1
         },
         externalId = <unset>,
         uptCompatibilityEnabled = false,
      }
   ]
}

其中VirtualUSB就是USB设备, 可以看到其名字域: deviceName = “path:1/9 version:2”

  • 执行命令vim-cmd vmsvc/device.disconnusbdev 1 “path:1/9 version:2”删除USB设备, 第一个参数1是虚拟机的ID, 第二个参数”path:1/9 version:2”是USB的设备名
  • 执行命令vim-cmd vmsvc/device.connusbdev 1 “path:1/9 version:2”添加USB设备, 第一个参数1是虚拟机的ID, 第二个参数”path:1/9 version:2”是USB的设备名