【发布时间】:2014-02-03 16:49:04
【问题描述】:
我正在尝试在 Windows 2012 hyperV 核心数据中心版上安装 vhd。为了安装 vhd,我使用 MSVM_Imagemanagementservice 类和其中的安装方法。磁盘已安装,但问题是没有分配驱动器号。我已经在其他 2012 数据中心版本和 2012 核心上尝试过它,它也可以正常工作。即在安装驱动器号后分配。
对此的任何想法都会有所帮助。
【问题讨论】:
标签: wmi
我正在尝试在 Windows 2012 hyperV 核心数据中心版上安装 vhd。为了安装 vhd,我使用 MSVM_Imagemanagementservice 类和其中的安装方法。磁盘已安装,但问题是没有分配驱动器号。我已经在其他 2012 数据中心版本和 2012 核心上尝试过它,它也可以正常工作。即在安装驱动器号后分配。
对此的任何想法都会有所帮助。
【问题讨论】:
标签: wmi
您可以查询驱动器号列表,然后根据您的要求分配驱动器号。下面给出了获取驱动器号列表的函数。
Function GetDriveLetterList(path)
'Where path is path of VHD
Dim mountedImage, diskDevice, diskPartition, diskPartitions, logicalPartition, timeout, query
Dim logicalPartitionList
timeout = 0
driveLetterList = ""
path = Replace(path,"\","\\")
Set wmiServiceCIM = GetObject("winmgmts:\\.\root\cimv2")
Do
WScript.Sleep(3000)
timeout = timeout + 3
Set mountedImage = (wmiService.ExecQuery("SELECT * FROM Msvm_MountedStorageImage WHERE Name='" & path & "'")).ItemIndex(0)
query = "SELECT * From Win32_DiskDrive WHERE Model='Msft Virtual Disk SCSI Disk Device' and SCSITargetId='" & mountedImage.TargetId & "' and SCSILogicalUnit='" & mountedImage.Lun & "' and SCSIPort='" & mountedImage.PortNumber & "'"
Set diskDevice = wmiServiceCIM.ExecQuery(query).ItemIndex(0)
query = "ASSOCIATORS OF {" & diskDevice.Path_.Path & "} where AssocClass=Win32_DiskDriveToDiskPartition"
Set diskPartitions = wmiServiceCIM.ExecQuery(query)
For Each diskPartition In diskPartitions
query = "ASSOCIATORS OF {" & diskPartition.Path_.Path & "} WHERE AssocClass=Win32_LogicalDiskToPartition"
Set logicalPartitionList = wmiServiceCIM.ExecQuery(query)
If logicalPartitionList.count > 0 Then
Set logicalPartition = logicalPartitionList.ItemIndex(0)
'WScript.Echo logicalPartition.DeviceID
driveLetterList = driveLetterList + logicalPartition.DeviceID
End If
Next
End Function
如果你想检查系统驱动器。那你就可以这样做了……
folderPath = driveLetter + ":\Windows\System32"
Set fileSys = CreateObject("Scripting.FileSystemObject")
If filesys.FolderExists(folderPath) Then
//doStuff
End If
【讨论】: